Desea comparar la "efectividad" y evaluar el número de pacientes que informan cada tratamiento. La efectividad se registra en cinco categorías discretas y ordenadas, pero (de alguna manera) también se resume en un "Promedio". (promedio), lo que sugiere que se considera una variable cuantitativa.
En consecuencia, deberíamos elegir un gráfico cuyos elementos estén bien adaptados para transmitir este tipo de información. Entre las muchas soluciones excelentes que se sugieren, uno usa este esquema:
Representar la efectividad total o promedio como una posición a lo largo de una escala lineal. Tales posiciones se captan más fácilmente visualmente y se leen con precisión cuantitativamente. Haga que la escala sea común a los 34 tratamientos.
Representa los números de pacientes con algún símbolo gráfico que se vea fácilmente como directamente proporcional a esos números. Los rectángulos son adecuados: se pueden colocar para satisfacer el requisito anterior y dimensionarse en la dirección ortogonal para que tanto sus alturas como sus áreas transmitan la información del número de paciente.
Distinga las cinco categorías de efectividad por un valor de color y / o sombreado. Mantener el orden de estas categorías.
Un enorme error cometido por el gráfico en la pregunta es que los valores visuales más prominentes, las longitudes de las barras, representan la información del número de paciente en lugar de la información de efectividad total. Podemos arreglar eso fácilmente volviendo a centrar cada barra sobre un valor medio natural.
Sin hacer ningún otro cambio (como mejorar el esquema de color, que es excepcionalmente pobre para cualquier persona daltónica), aquí está el rediseño.
Agregué líneas punteadas horizontales para ayudar al ojo a conectar las etiquetas con los gráficos, y borré una delgada línea vertical para mostrar la ubicación central común.
Los patrones y el número de respuestas son mucho más evidentes. En particular, esencialmente obtenemos dos gráficos por el precio de uno: en el lado izquierdo podemos leer una medida de los efectos adversos, mientras que en el lado derecho podemos ver qué tan fuertes son los efectos positivos . Poder equilibrar el riesgo, por un lado, con el beneficio, por otro, es importante en esta aplicación.
Un efecto fortuito de este rediseño es que los nombres de los tratamientos con muchas respuestas están separados verticalmente de los demás, lo que facilita la exploración y ver qué tratamientos son los más populares.
Otro aspecto interesante es que este gráfico pone en duda el algoritmo utilizado para ordenar los tratamientos por "efectividad promedio": por qué, por ejemplo, el "seguimiento del dolor de cabeza" se coloca tan bajo cuando, entre todos los tratamientos más populares, era el único no tener efectos adversos?
Se R
adjunta el código rápido y sucio que produjo esta trama.
x <- c(0,0,3,5,5,
0,0,0,0,2,
0,0,3,2,4,
0,1,7,9,7,
0,0,3,2,3,
0,0,0,0,1,
0,1,1,1,2,
0,0,2,2,1,
0,0,1,0,1,
0,0,3,2,1,
0,0,2,0,1,
1,0,5,5,2,
1,3,15,15,4,
1,2,5,7,3,
0,0,4,4,0,
0,0,2,2,0,
0,0,3,0,1,
0,0,2,2,0,
0,4,18,19,2,
0,0,2,1,0,
3,1,27,25,3,
1,0,2,2,1,
0,0,4,2,0,
0,1,6,5,0,
0,0,3,1,0,
3,0,3,7,2,
0,1,0,1,0,
0,0,21,4,2,
0,0,6,1,0,
1,0,2,0,1,
2,4,15,8,1,
1,1,3,1,0,
0,0,1,0,0,
0,0,1,0,0)
levels <- c("Made it much worse", "Made it slightly worse", "No effect or uncertain",
"Moderate improvement", "Major improvement")
treatments <- c("Oxygen", "Gluten-free diet", "Zomig", "Sumatriptan", "Rizatriptan (Maxalt)",
"Dilaudid suppository", "Dilaudid-Morphine", "Verapamil",
"Magic mushrooms", "Magnesium", "Psilocybine", "Excedrin Migraine",
"Ice packs on neck and head", "Passage of time", "Red Bull", "Lidocaine",
"Vitamin B-2 (Roboflavin)", "Caffergot", "Caffeine", "Tobasco in nose / on tongue")
treatments <- c(treatments,
"Ibuprofen", "Topamax", "Excedrin Tension Headache", "Acetaminophen (Tylenol)",
"Extra Strength Excedrin", "Hot water bottle", "Eletriptan",
"Headache tracking", "Women to Women vitamins", "Effexor", "Aspirin",
"Propanolol", "L-Arginine", "Fioricet")
x <- t(matrix(x, 5, dimnames=list(levels, treatments)))
#
# Precomputation for plotting.
#
n <- dim(x)[1]
m <- dim(x)[2]
d <- as.data.frame(x)
d$Total <- rowSums(d)
d$Effectiveness <- (x %*% c(-2,-1,0,1,2)) / d$Total
d$Root <- (d$Total)
#
# Set up the plot area.
#
colors <- c("#704030", "#d07030", "#d0d0d0", "#60c060", "#387038")
x.left <- 0; x.right <- 6; dx <- x.right - x.left; x.0 <- x.left-4
y.bottom <- 0; y.top <- 10; dy <- y.top - y.bottom
gap <- 0.4
par(mfrow=c(1,1))
plot(c(x.left-1, x.right), c(y.bottom, y.top), type="n",
bty="n", xaxt="n", yaxt="n", xlab="", ylab="", asp=(y.top-y.bottom)/(dx+1))
#
# Make the plots.
#
u <- t(apply(x, 1, function(z) c(0, cumsum(z)) / sum(z)))
y <- y.top - dy * c(0, cumsum(d$Root/sum(d$Root) + gap/n)) / (1+gap)
invisible(sapply(1:n, function(i) {
lines(x=c(x.0+1/4, x.right), y=rep(dy*gap/(2*n)+(y[i]+y[i+1])/2, 2),
lty=3, col="#e0e0e0")
sapply(1:m, function(j) {
mid <- (x.left - (u[i,3] + u[i,4])/2)*dx
rect(mid + u[i,j]*dx, y[i+1] + (gap/n)*(y.top-y.bottom),
mid + u[i,j+1]*dx, y[i],
col=colors[j], border=NA)
})}))
abline(v = x.left, col="White")
labels <- mapply(function(s,n) paste0(s, " (", n, ")"), rownames(x), d$Total)
text(x.0, (y[-(n+1)]+y[-1])/2, labels=labels, adj=c(1, 0), cex=0.8,
col="#505050")
caffeine
oibuprofen
conducir a una mayor probabilidad demoderate improvement
porque las líneas de base ¿diferir de? ¿O algo mas?