【问题标题】:ggplot two lines on same chart from data with different number of rowsggplot 在同一图表上从具有不同行数的数据中绘制两条线
【发布时间】:2020-04-24 13:50:10
【问题描述】:

我总是遇到这个问题,我需要在图表上绘制两条线,但我的数据中有不同的行数。我不断收到这个错误,我希望我能一劳永逸地解决它:

错误:(从警告转换)删除了包含缺失的 5 行 值(geom_path)。

这是一些示例数据(我没有手动添加 NA):

datamre <- structure(list(xR = c(0L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 
10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 
23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, NA, NA, NA, NA), received = c(0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1666667, 0.1666667, 0.1666667, 
0.1666667, 0.1666667, 0.1666667, 0.1666667, 0.1666667, 0.1666667, 
0.1666667, 0.1666667, 0.1666667, 0.1666667, 0.1666667, 0.1666667, 
0.1666667, 0.1666667, 0.1666667, 0.1666667, 0.1666667, NA, NA, 
NA, NA), xD = 0:34, demand = c(0, 0.08333333, 0.08333333, 0.08333333, 
0.08333333, 0.08333333, 0.08333333, 0.08333333, 0.16666667, 0.25, 
0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 
0.25, 0.25, 0.25, 0.25, 0.33333333, 0.33333333, 0.33333333, 0.33333333, 
0.33333333, 0.33333333, 0.33333333, 0.41666667, 0.41666667, 0.41666667
)), row.names = c(NA, 35L), class = "data.frame")

还有我正在使用的简单代码:

df <- data.frame(datamre)
ggplot(df) +
   geom_line(aes(xR,received)) +
   geom_line(aes(xD,demand)) 

【问题讨论】:

  • 警告不是错误。这只是提醒您没有绘制 5 个数据点,因为 xy 美学中存在 NAs。这不是本身需要关心的事情。也许NA 是在您将数据转换为长格式时引入的?
  • 但它被列为错误并且没有绘制任何内容。
  • 有趣。我得到一个情节。看到这个image
  • 我做错了什么,因为我总是得到这个?
  • 这个问题可能会有所帮助:stackoverflow.com/questions/46605672/…

标签: r ggplot2 charts


【解决方案1】:

试试这个:

ggplot(df[complete.cases(df),]) +
  geom_line(aes(xR,received)) +
  geom_line(aes(xD,demand))

【讨论】:

  • 那行得通 - 谢谢,但我仍然不明白为什么 Ian Campbell 有一个解决方案而不添加“complete.cases”(我假设)。
  • 他可能有正当理由。两种情况是有区别的。如果我们在不添加完整案例的情况下进行绘图,则将使用每个变量中的可用数据单独绘制接收线和需求线。如果您将获得的情节与我制作的伊恩坎贝尔的情节进行比较,您会发现差异。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多