【发布时间】:2017-08-15 16:30:28
【问题描述】:
我正在尝试为 ggplot2 中的有序堆叠条形图创建自定义标签。
我的花园里有六种不同的动物——海狸、大象、袋鼠、老鼠、龙和吉娃娃。
我两次让他们每人为我唱歌,一次是在他们开心的时候,一次是在他们悲伤的时候。我记录了他们每次唱歌的时长。
我想在堆积条形图中绘制动物的总歌唱时间,一个堆积条对应一只动物,堆积条的每个组成部分对应动物的情绪,但我想按照堆积条的顺序排列堆积条动物的大小,动物的名字显示在条形下方。
为了做到这一点,我在数据框中创建了一个列,将尺寸顺序信息与动物因素(例如“1.mouse”等)结合起来。这允许条形按大小顺序显示。然后我尝试使用“子字符串”来提取与 x 标签名称相对应的字母(以便它读取例如“鼠标”等),但没有成功。
如果我只使用“动物”来标记轴,那么 ggplot 会使用按字母顺序列出的动物名称来标记条形。我也尝试过使用“订单”功能。
我查看了堆栈溢出和其他网站,但在其他地方找不到确切的问题。
非常感谢我和我的动物园!
animal<-rep(c("beaver","elephant","kangaroo","mouse","dragon","chihuahua"),2)
size_order<-rep(c(3,5,4,1,6,2),2)
mood<-c((rep("happy",6)),rep("sad",6))
singing_time<-as.numeric(rnorm(12, 5, 2))
ordered_animal<-paste(size_order,animal,sep = ".")
singing_data<-as.data.frame(cbind(mood,singing_time,ordered_animal))
ggplot(singing_data, aes(x = ordered_animal, y = singing_time, fill = mood, label = singing_time)) +
geom_bar(stat = "identity") +
scale_x_discrete(labels = levels(substring(as.factor(ordered_animal),3,10)))
【问题讨论】:
-
对因子水平进行排序,这将反映在绘图顺序中。您也可以订购。
-
感谢您的回复。条形按以下顺序排序:ordered_animal
标签: r ggplot2 axis-labels stacked-chart stackedbarseries