Vous souhaitez comparer "l'efficacité" et évaluer le nombre de patients rapportant chaque traitement. L'efficacité est enregistrée dans cinq catégories distinctes et ordonnées, mais (d'une manière ou d'une autre) est également résumée dans un "Avg". (moyenne), ce qui suggère qu'elle est considérée comme une variable quantitative.
En conséquence, nous devons choisir un graphique dont les éléments sont bien adaptés pour véhiculer ce type d'informations. Parmi les nombreuses excellentes solutions qui se suggèrent, on utilise ce schéma:
Représentez l'efficacité totale ou moyenne comme une position le long d'une échelle linéaire. De telles positions sont plus facilement saisies visuellement et lues avec précision quantitativement. Rendez l'échelle commune aux 34 traitements.
Représentez le nombre de patients par un symbole graphique qui est facilement considéré comme directement proportionnel à ces nombres. Les rectangles sont bien adaptés: ils peuvent être positionnés pour satisfaire l'exigence précédente et dimensionnés dans la direction orthogonale de sorte que leurs hauteurs et leurs zones véhiculent les informations du numéro de patient.
Distinguez les cinq catégories d'efficacité par une valeur de couleur et / ou d'ombrage. Maintenir l'ordre de ces catégories.
Une énorme erreur commise par le graphique de la question est que les valeurs visuelles les plus importantes - les longueurs des barres - représentent les informations sur le nombre de patients plutôt que les informations sur l'efficacité totale. Nous pouvons résoudre ce problème facilement en recentrant chaque barre sur une valeur moyenne naturelle.
Sans apporter d'autres modifications (telles que l'amélioration de la palette de couleurs, qui est exceptionnellement mauvaise pour toute personne daltonienne), voici la refonte.
J'ai ajouté des lignes pointillées horizontales pour aider l'œil à connecter les étiquettes aux tracés, et j'ai effacé une fine ligne verticale pour montrer l'emplacement central commun.
Les schémas et le nombre de réponses sont beaucoup plus évidents. En particulier, nous obtenons essentiellement deux graphiques pour le prix d'un: sur le côté gauche, nous pouvons lire une mesure des effets négatifs tandis que sur le côté droit, nous pouvons voir la force des effets positifs . Pouvoir équilibrer le risque, d'une part, contre le bénéfice, d'autre part, est important dans cette application.
Un effet fortuit de cette refonte est que les noms des traitements avec de nombreuses réponses sont séparés verticalement des autres, ce qui facilite le balayage et la détection des traitements les plus populaires.
Un autre aspect intéressant est que ce graphique remet en cause l'algorithme utilisé pour classer les traitements par "efficacité moyenne": pourquoi, par exemple, le "suivi des céphalées" est-il si bas alors que, parmi tous les traitements les plus populaires, il était le seul n'avoir aucun effet indésirable?
Le R
code rapide et sale qui a produit ce tracé est ajouté.
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
ouibuprofen
conduire à une probabilité plus élevée demoderate improvement
parce que les lignes de base différer? Ou autre chose?