简体   繁体   中英

Small values in alluvial plot where decreasing fontsize does not seem to be the solution

I have a question where I am having some trouble with small counts in the category "Worse". Decreasing fontsize even more will decrease the readability (changing the vertical height is also not the solution for me). Does somebody have an ingenious idea of presenting the category (arrow with textbox eg, but how?)

library(alluvial)
library(ggalluvial)
library(ggplot2)

Shortterm<-c("Healed","Impoved","Same","Worse","Healed","Improved","Same","Worse","Healed","Improved","Same","Worse")
Longterm<-c("Healed","Healed","Healed","Healed","Improved","Improved","Improved","Improved","Worse","Worse","Worse","Worse")
Frequence<-c(28,2,0,1,14,6,3,0,1,1,0,0)
Order<-c(0,0,0,0,1,1,1,1,2,2,2,2)
Improved<-c("Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","No","No","No","No")

output<-data.frame(Shortterm,Longterm,Frequence,Order,Improved)
output$Improved <- factor(output$Improved, levels = c("Yes", "No"))

ggplot(data = output,
       aes(axis1 = Shortterm, axis2 = Longterm,
           y = Frequence)) +
  scale_x_discrete(limits = c("Short-term \n ~ 6 months", "Long-term \n ~ 15 years"),expand = c(.2, .05),position="bottom") +
  scale_y_continuous(label = scales::percent_format(scale = 100 /n_id),breaks=c(0,1/4*n_id,1/2*n_id,3/4*n_id,n_id)) +
  geom_alluvium(aes(fill = Improved)) +
  geom_stratum() +
  geom_text(stat = "stratum", aes(label = after_stat(stratum))) +
  scale_fill_manual(values = c("green", "red"))+
  theme_minimal()

短期内更糟糕的是计数非常低

I found the answer:

Shortterm<-c("Healed","Improved","Same"," ","Healed","Improved","Same"," ","Healed","Improved","Same"," ")
Longterm<-c("Healed","Healed","Healed","Healed","Improved","Improved","Improved","Improved","Worse","Worse","Worse","Worse")
Frequence<-c(28,2,0,1,14,6,3,0,1,1,0,0)
Order<-c(0,0,0,0,1,1,1,1,2,2,2,2)
Improved<-c("Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","No","No","No","No")

output<-data.frame(Shortterm,Longterm,Frequence,Order,Improved)
output$Improved <- factor(output$Improved, levels = c("Yes", "No"))
output$Shortterm <- factor(output$Shortterm, levels = c("Healed","Same","Improved"," "))
output$Longterm  <- factor(output$Longterm,  levels = c("Healed","Same","Improved","Worse"))

n_id <- sum(output$Frequence)
ggplot(data = output,
       aes(axis1 = Shortterm, axis2 = Longterm,
           y = Frequence)) +
  scale_x_discrete(limits = c("Short-term \n ~ 6 months", "Long-term \n ~ 15 years"),expand = c(.2, .05),position="bottom") +
  scale_y_continuous(label = scales::percent_format(scale = 100 /n_id),breaks=c(0,1/4*n_id,1/2*n_id,3/4*n_id,n_id)) +
  geom_alluvium(aes(fill = Improved)) +
  geom_stratum() +
  geom_text(stat = "stratum", aes(label = after_stat(stratum)),size=3) +
  scale_fill_manual(values = c("green", "red"))+
  theme_minimal() +
  ylab("Operated patients") + xlab("")+ theme(axis.text.x = element_text(face="bold",size=14))+
  annotate(
    geom = "curve", x = 1, y = 0.4, xend = 1.05, yend = -2, 
    curvature = .3, arrow = arrow(length = unit(2, "mm"))
  )+
  annotate(geom = "text", x = 1.07, y = -2, label = "Worse", hjust = "left",size=3)

解决方案!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM