我正在尝试为 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)))