我正在用 R 中的 ggplot2 制作堆积条形图,并在 y 轴上进行特定的条形排序。
# create reproducible data
library(ggplot2)
d <- read.csv(text='Day,Location,Length,Amount
1,4,3,1.1
1,3,1,2
1,2,3,4
1,1,3,5
2,0,0,0
3,3,3,1.8
3,2,1,3.54
3,1,3,1.1',header=T)
ggplot(d, aes(x = Day, y = Length)) + geom_bar(aes(fill = Amount, order = Location), stat = "identity")
ggplot(d, aes(x = Day, y = Length)) + geom_bar(aes(fill = Amount, order = rev(Location)), stat = "identity")
第一个 ggplot 图按位置顺序显示数据,其中 Location=1 最接近 x 轴,并且位置的每个递增值的数据堆叠在下一个上。
第二个 ggplot 图以不同的顺序显示数据,但它不会将具有最接近 x 轴的最高位置值的数据与下一个最高位置的数据堆叠在从 x 轴位置开始的第二个位置第一个栏,就像我希望它基于之前的帖子一样。
下一个片段确实以所需的方式显示数据,但我认为这是简单和小型示例数据集的产物。尚未指定堆叠顺序,因此我认为 ggplot 是根据 Amount 的值进行堆叠的。
ggplot(d, aes(x = Day, y = Length)) + geom_bar(aes(fill = Amount), stat = "identity")
我想要的是通过调用order =
或一些等效的参数。有什么想法或建议吗?
看起来应该很容易,因为我只处理数字。要求 ggplot 以对应于一列递减(随着您远离 x 轴)数字的方式堆叠数据应该不难,不是吗?