Desea comparar la "eficacia" y evaluar el número de pacientes que informan de cada tratamiento. La eficacia se registra en cinco categorías discretas y ordenadas, pero (de alguna manera) también se resume en un valor "Avg.". (media), lo que sugiere que se considera una variable cuantitativa.
En consecuencia, debemos 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, una utiliza este esquema:
-
Representar la eficacia total o media como una posición a lo largo de una escala lineal. Estas posiciones son más fáciles de captar visualmente y de leer cuantitativamente con precisión. Haga que la escala sea común a los 34 tratamientos.
-
Representar los números de pacientes mediante algún símbolo gráfico que se vea fácilmente que es directamente proporcional a esos números. Los rectángulos son adecuados: pueden colocarse de forma que satisfagan el requisito anterior y dimensionarse en la dirección ortogonal para que tanto su altura como su área transmitan la información sobre el número de pacientes.
-
Distinga las cinco categorías de eficacia mediante un color y/o un valor de sombreado. Mantenga el orden de estas categorías.
Un error enorme que comete el gráfico de la pregunta es que los valores visuales más destacados -las longitudes de las barras- representan la información sobre el número de pacientes en lugar de la información sobre la eficacia total. Podemos solucionarlo fácilmente recentrado cada barra sobre un valor medio natural.
Sin hacer ningún otro cambio (como mejorar la combinación de colores, que es excepcionalmente pobre para cualquier daltónico), aquí está el rediseño.
He añadido líneas de puntos horizontales para ayudar al ojo a conectar las etiquetas con las parcelas, y he borrado una fina 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 concreto, obtenemos dos gráficos por el precio de uno: en el lado izquierdo podemos leer una medida de efectos adversos mientras que a la derecha podemos ver la fuerza de la efectos positivos son. En esta aplicación es importante poder sopesar el riesgo, por un lado, y el beneficio, por otro.
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 el escaneo hacia abajo y ver qué tratamientos son los más populares.
Otro aspecto interesante es que este gráfico pone en tela de juicio el algoritmo utilizado para ordenar los tratamientos por "Eficacia media": ¿por qué, por ejemplo, el "Seguimiento del dolor de cabeza" se sitúa tan abajo cuando, entre todos los tratamientos más populares, fue el único que no tuvo efectos adversos?
Lo más rápido R
que produjo este gráfico.
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")
0 votos
(Por favor, no utilice gráficos circulares). Con "hacer hincapié en la eficacia sin dejar de facilitar la comparación de los tratamientos", ¿se refiere al hecho de que, por ejemplo, es difícil ver si
caffeine
oibuprofen
conducen a una mayor probabilidad demoderate improvement
porque las líneas de base difieren? ¿O por otra cosa?