GGplot Stacked Barplot с индивидуальными цветами - PullRequest
0 голосов
/ 11 июля 2019

Я хочу создать столбчатую диаграмму с накоплением, в которой нижняя категория каждого столбца имеет зеленый цвет, а верхняя категория каждого столбца изменяется от темно-красного до ярко-красного (слева направо).

Например, используяэтот код:


df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3),
                dose=rep(c("D0.5", "D1", "D2"),2),
                len=c(6.8, 15, 33, 4.2, 10, 29.5))

library(plyr)
# Sort by dose and supp
df_sorted <- arrange(df2, dose, supp) 

df_cumsum <- ddply(df_sorted, "dose",
                   transform, label_ypos=cumsum(len))


ggplot(data=df_cumsum, aes(x=dose, y=len, fill=supp)) +
  geom_bar(stat="identity")+
  geom_text(aes(y=label_ypos, label=len), vjust=1.6, 
            color="white", size=3.5)+
  scale_fill_manual(values = c("red", "green")) +
  theme_minimal()




Возможно ли это?

1 Ответ

1 голос
/ 12 июля 2019

Если вы хотите по-разному окрашивать верхние полосы, вам нужно создать для них разные факторы.Например, вставив столбцы supp и dose для значений OJ:

df_cumsum$supp <- as.character(df_cumsum$supp)
df_cumsum$supp <- ifelse(df_cumsum$supp == "OJ", paste(df_cumsum$supp, df_cumsum$dose, sep = ""), df_cumsum$supp)
df_cumsum$supp <- as.factor(df_cumsum$supp)

ggplot(data=df_cumsum, aes(x=dose, y=len, fill=supp)) +
  geom_bar(stat="identity")+
  geom_text(aes(y=label_ypos, label=len), vjust=1.6, 
            color="white", size=3.5)+
  scale_fill_manual(values = c("#E74C3C", "#EC7063", "#F1948A", "#27AE60")) +
  theme_minimal()

hg

...