【问题标题】:introducing a gap in continuous x axis using ggplot使用 ggplot 在连续 x 轴上引入间隙
【发布时间】:2012-10-12 13:35:29
【问题描述】:

这是在我之前的post 的基础上创建一个缺少值的堆叠区域/条形图(我运行的所有脚本都可以在那里找到)。然而,在这篇文章中,我问是否有可能在连续的 x 轴上留下一个间隙?我有一个超过一年的时间序列(逐月),但是对于一个样本,缺少一个月,我想将这个月显示为情节中的一个完整间隙。几乎就像为 1 月至 8 月(缺少 9 月)和 10 月至 12 月绘制一个图表,然后将它们与 9 月的差距合并。

我想出的唯一尝试是将缺失的月份视为零或 NA,在 9 月的面积图中创建一个巨大的下降或排除它,但 x 轴的范围分别为 1-11(请参见图Dropbox 文件夹)。

我正在处理的数据集可以在我的dropbox folder 中找到,它被命名为 r_class.txt,您还可以看到两个不同的图(Rplots1 和 2)。

任何想法都将不胜感激!

【问题讨论】:

  • 更好的问题格式是避免使用下标和问候语。
  • 我没有完全理解你的问题:a) 你的 x 轴应该真正保持连续。只是你的层有一个差距:我认为你可以通过放置一个 Jan - Aug 层和一个 Oct - Dec 层来实现。 b)您希望在轴上有一个间隙(ggplot 术语中的指南)。恕我直言,最简单的方法是分面到 Jan - Aug ./。 10 月 - 12 月。
  • 只使用缺失值。它会打破界限。
  • @hadley,你能解释一下吗?似乎缺失值是用 geom_area 插值的(但不是,例如 geom_line)。因此,使用链接帖子上的 OP 代码,如果我们将所有“Sep”值设置为 NA,则 9 月的区域不会中断。
  • 如果geom_area 没有与 NA 中断,那是一个错误。如果有人提供了一个最小的独立示例,我可以进一步探索。

标签: r ggplot2 missing-data stacked-area-chart timeserieschart


【解决方案1】:

将系列绘制为两个单独的数据框:

#Load libraries
require(ggplot2)
require(reshape)

#Code copied from your linked post:
wa=read.table('wa_class.txt', sep="", header=F, na.string="0")
names(wa)=c("Class","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
wam=melt(wa)
wam$variablen=as.numeric(wam$variable)

#For readability, split the melted data frame into two separate data frames
wam1 <- wam[wam$variablen %in% 1:6,]
wam2 <- wam[wam$variablen %in% 8:12, ]

ggplot() +
  geom_area(data=wam1, aes(x=variablen, y=value, fill=Class)) +
  geom_area(data=wam2, aes(x=variablen, y=value, fill=Class))
  #and add lineranges, etc., accordingly

【讨论】:

  • 非常感谢!完美运行!
猜你喜欢
  • 2021-06-14
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多