我正在使用geom_area
绘制一个非常简单的数据集。使用geom_line
进行绘制时,一切正常,但是当我切换到geom_area
时,会绘制出更高的值。查看图表,将是代表我的问题的最好方法:
require(tidyverse)
x <- structure(list(Time = 0:40, X15.DCIA = c(0, 1, 0.5, 0, 2, 2.5,
1, 0.5, 0, 1, 1.5, 1, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 3,
5, 7, 6.5, 5.5, 4, 3, 2, 1.5, 1, 0.25, 0, 0, 0, 0, 0, 0, 0),
X100.DCIA = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1.5, 7, 8, 7.5, 6.5, 5, 3.5, 2.25,
1.75, 1.1, 0.4, 0.1, 0, 0, 0, 0, 0, 0)),
class = "data.frame", row.names = c(NA,-41L))
x %>% gather(prct.DCIA, Vol, -Time) %>% ggplot(aes(x=Time, y=Vol)) +
geom_line(aes(color=prct.DCIA))
x %>% gather(prct.DCIA, Vol, -Time) %>% ggplot(aes(x=Time, y=Vol)) +
geom_area(aes(fill=prct.DCIA))
这是我所期望的(数据的线图)。
但是随后查看geom_area
,您会发现100DCIA
已跃升至15。
我对说明感兴趣,而不是解决方法或解决方法。
注意:
这可能是一种解决方法:
x %>% gather(prct.DCIA, Vol, -Time) %>% ggplot(aes(x=Time, y=Vol)) +
geom_polygon(aes(fill=prct.DCIA, alpha=0.5)) + guides(alpha=FALSE)
答案 0 :(得分:3)
说明: 您的地块彼此堆叠。
在geom_area
图中红线之后看到的值是geom_line
图中红线和蓝线的值之和。
如果将prct.DCIA
与facet_grid()
分开,您会清楚地看到这一点:
x %>% gather(prct.DCIA, Vol, -Time) %>% ggplot(aes(x=Time, y=Vol)) +
geom_area(aes(fill=prct.DCIA)) + facet_grid(.~prct.DCIA)
这仅仅是因为position = "stack"
is the default argument in geom_area
:
geom_area(mapping = NULL, data = NULL, stat = "identity", position = "stack", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...)
人们可能会认为这是因为人们使用geom_area
是因为他们想在图表上显示整个区域,而不是在某些线条下填充。通常,条形图或区域可能表示某物的数量,或者填充的区域表示某物,而点或线可能表示点估计,而线或点上方或下方的面积没有意义。
Cf。 the default argument for geom_line
是position = "identity"
。
geom_line(mapping = NULL, data = NULL, stat = "identity", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...)
修复:
如果您使用position = position_dodge()
,则可以看到它们恢复为折线图的外观,红色区域绘制在蓝色区域的后面:
x %>% gather(prct.DCIA, Vol, -Time) %>% ggplot(aes(x=Time, y=Vol)) +
geom_area(aes(fill=prct.DCIA), position = position_dodge())
您甚至可以将alpha
<1设置为清晰可见:
x %>% gather(prct.DCIA, Vol, -Time) %>% ggplot(aes(x=Time, y=Vol)) +
geom_area(aes(fill=prct.DCIA), position = position_dodge(), alpha = 0.5)