我正在 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 的顺序显示数据,Location=1 最接近 x 轴,并且 Location 的每个递增值的数据堆叠在下一个上。
第二个 ggplot 图以不同的顺序显示数据,但它不会将最接近 x 轴的最高位置值的数据与堆叠在距离 x 轴位置第二个位置的下一个最高位置的数据堆叠在一起。第一个栏列,就像我期望的那样较早的帖子 https://stackoverflow.com/questions/30486617/r-stacked-bargraph-with-colors-representing-values.
下一个片段确实以所需的方式显示数据,但我认为这是简单且小型示例数据集的产物。尚未指定堆叠顺序,因此我认为 ggplot 是根据 Amount 的值进行堆叠的。
ggplot(d, aes(x = Day, y = Length)) + geom_bar(aes(fill = Amount), stat = "identity")
我想要的是是通过调用以下命令强制 ggplot 按位置值递减的顺序堆叠数据(最接近 x 轴的位置 = 4,接下来的位置 = 3,...,以及条形列最顶部的位置 = 1)order =
或一些等效的论点。有什么想法或建议吗?
看起来应该很容易,因为我只处理数字。要求 ggplot 以与一列递减(当您远离 x 轴时)数字相对应的方式堆叠数据应该不难,不是吗?