我想制作一个堆叠的条形图,其中每个“公司”都有一种颜色,每种运动都分为三种颜色。我尝试使用alpha
,但无论如何我似乎都无法使用它,但是我宁愿使用颜色主题。
我已经提交了包含数据的代码,这些数据是我为实践“真实”数据所执行的步骤而编写的。如果您有关于如何简化此操作的建议,请不要犹豫。
先感谢您。
x1<-c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
x2<-c("Hej", "Hopp", "i Galopp", "Hopp", "i Galopp", "Hej", "i Galopp", "Hej",
"Hopp", "Hej")
x3<-c(301, 5, 4, 26, 19, 82, 111, 41, 29, 12)
x4<-c(52, 43, 5, 23, 7, 88, 45, 2, 44, 56)
x5<-c(99, 4, 41, 77, 82, 71, 66, 203, 43, 40)
mydf<-data.frame(x1, x2, x3, x4, x5)
names(mydf)<-c("ID", "Company" , "Swim", "Bike", "Run")
mydf_prop<-prop.table(as.matrix(mydf[,3:5]),1)
mydf_prop<- mydf_prop %>% round(digits=2)
mydf_prop<-cbind.data.frame("Company"=mydf[,2], mydf_prop)
mydf_prop<-cbind.data.frame("ID"=mydf[,1], mydf_prop)
mydf_prop[,3:5]<-mydf_prop[,3:5]*100
mydf_prop<-mydf_prop %>% gather(`Swim`, `Bike`, `Run`, key = "Sport",
value = "Sales in %") %>% arrange(`ID`)
mydf_prop %>% ggplot(aes(`ID`, `Sales in %`, fill=Company, alpha(Sport)))+
geom_col()+ geom_text(aes(`ID`, `Sales in %`, label=paste0(`Sales in %`, "%")),
position = position_stack(vjust = 1), size =3)+
scale_alpha_manual(values=c(0.1, 0.5, 1)) +
scale_x_continuous(breaks = seq(0,10,1))+ coord_flip()
答案 0 :(得分:0)
我不能完全确定“颜色分为三部分”的含义,但是对alpha
的代码稍作更改就会产生以下结果。除非您想深入了解Sport调整色调的本质,否则这可能是最简单的方法。
mydf_prop %>%
ggplot(aes(`ID`, `Sales in %`, fill=Company, alpha = Sport))+
geom_col()+
geom_text(aes(`ID`, `Sales in %`, label=paste0(`Sales in %`, "%")),
position = position_stack(vjust = 0.5), size = 3)+
scale_x_continuous(breaks = seq(0,10,1))+
scale_alpha_discrete(range = c(0.5, 1))+
coord_flip()