【问题标题】:Stacked Area Plot Y-axis not reflecting actual data points堆积面积图 Y 轴不反映实际数据点
【发布时间】:2020-07-17 00:18:42
【问题描述】:

我一直在尝试使用 ggplot2 绘制堆积面积图。 我的问题是我的绘图的 y 轴没有准确地显示 value 的范围。我最大的 value 数是 100。

  Date          A         B          C         D      E
2019-12-31     0.0       0.0        0.0       0.0    0.0
2019-12-24     0.0       0.0        0.0       0.0    0.0
...
2016-12-27    18.09     81.91      40.21      9.70   1.7
...
2014-01-28    92.11     7.89       0.00       0.00   0.00
...
2000-01-01     0.0       0.0        0.0        0.0    0.0

我将数据从宽到长格式化

long_data <- melt(data,measure.vars = c("A","B","C","D","E"), variable.name = "Intensity") 

绘制的ggplot(long_data,aes(x = Date,y = value,fill = Intensity)) + geom_area() 我的情节是这样的

[堆积面积图][1] [1]:https://i.stack.imgur.com/i5ksF.png 我在excel中做过这个,图表是一样的。我尝试在 y 轴上添加限制,但没有帮助。但是,我注意到的一件事是,如果我执行geom_line(),y 轴的缩放比例正确。

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。以可以复制/粘贴到 R 中的方式共享数据(不要使用“...”,因为那是不可复制的)。如果它是堆叠的,那么高度将是一次所有类别的总和。所以你不想把它堆叠起来吗?你只是想让它像线条一样重叠吗?

标签: r ggplot2


【解决方案1】:

geom_area 的默认值为position = "stacked",而您需要它为position = "identity"。这里需要注意的是,您还需要将填充变量作为一个因子,基于 y 值的级别,否则某些值可能隐藏在更大的值后面。另一种选择是为 geom_area 设置alpha = .3

如果没有数据集,我很难事先进行测试。尝试使用 dput(data) 并将输出复制并粘贴到您的下一个问题中

library(tidyverse)
library(forcats)

long_data %>%
mutate(Intensity = fct_reorder(Intensity, value, .desc = TRUE)) %>%
ggplot(long_data,aes(x = Date, 
                     y = value,
                     fill = Intensity)) + 
geom_area(position = "identity")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    相关资源
    最近更新 更多