r - geom_area 绘图区域的间隙

标签 r ggplot2

我想根据因子变量“状态”区分绘图颜色的区域。我使用 fill=Status,但是,我看到绘图区域出现了中断。关于如何避免这种情况以及为什么会发生这种情况的任何想法/建议?

df1 <- data.frame(Date=seq(as.Date("2016/03/01"), as.Date("2016/03/10"), "day"),
             Storypoints=c(8,14,16,23,28,35,40,44,46,55),
             Status=c(rep("Completed",7), rep("Open",3)))

ggplot(data=df1, mapping = aes(x = Date)) + 
geom_area(aes(y=Storypoints, fill=Status))

plot

最佳答案

原因是 Mar 07 和 Mar 08 之间没有数据点。而且由于间隙两侧的点不属于同一组,ggplot 不会将它们连接起来。简单地说,红色是在 3 月 7 日结束,蓝色是在 3 月 8 日开始,两者之间没有任何内容。
如果您对相同的绘图进行成像,但只是简单地去除了间隙,这意味着 x 轴应该同时标记为 Mar 07 和 Mar 08,两条曲线在此处相交。
对此没有明显的解决方案,因为实际上没有可以在间隙中绘制的数据。如果您想填补空白,您必须做出决定并相应地修改您的数据。
一个可能的决定(但很可能不是一个很好的决定)是简单地添加一个数据点,以便读取区域填补空白:

df1[11, "Date"] <- as.Date("2016-03-08")
df1[11, "Storypoints"] <- 44
df1[11, "Status"] <- "Completed"
ggplot(data=df1, mapping = aes(x = Date)) + 
  geom_area(aes(y=Storypoints, fill=Status), pos = "identity")
enter image description here
但是这个问题很明显:我添加的数据点不应该存在,所以 3 月 8 日的情节实际上是误导性的。
我不确定是否有令人满意的解决方案。但也许其他人有更好的主意。

关于r - geom_area 绘图区域的间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35725964/

相关文章:

r - 安装AWS S3 R包

r - 在 GUI 中使用 R 引用类将值从一个窗口传递到另一个窗口

r - 使用 geom_bar 更改填充的图例形状大小

r - 通过 R 中的 geom_text 将小于符号 "<"添加到 ggplot

html - 使用 knitr(从 .Rhtml 到 html): how to embed a link in an R Figure?

r - 如何读取缩进数据?

r - 将 Packrat 库与 knitr 和 rstudio 编译 PDF 按钮一起使用

r - 向量化 R 中的双重求和

r - R 中的 3D 极坐标图

r - 保存 ggplotGrob 生成的 ggplot2 时间序列图 grob