【问题标题】:How to plot a line plot with NA entries?如何绘制带有 NA 条目的线图?
【发布时间】:2020-07-02 20:53:11
【问题描述】:

R 中使用ggplot2 一次绘制多个变量时,如何省略NA 条目以便连接线图?

如您所见,我的数据集充满了NA 条目。 (我正在使用我的举重训练来学习如何使用R。由于我每次锻炼都没有做同样的运动,所以我一定会有NA 条目。)我知道我可以省略带有NA 条目的行,但这会删除我数据框中的每一行。

是否可以将我的数据框绘制为没有换行符的连续线图?

ss <- structure(list(date = structure(c(18421, 18423, 18425, 18428, 
18431, 18435), class = "Date"), bw = c(NA, NA, NA, 95.4, NA, 
NA), squat = c(40, 42.5, 45, 47.5, 50, 52.5), deadlift = c(60, 
NA, 62.5, 65, 67.5, 70), press = c(25, NA, 27.5, NA, 30, NA), 
    bench = c(NA, 40, NA, 42.5, NA, 45), chinup = c(NA, NA, NA, 
    NA, NA, NA), clean = c(NA, NA, NA, NA, NA, NA)), row.names = c(NA, 
-6L), class = "data.frame")

这是我到目前为止编写的代码。首先,我尝试使用 tidyverse 清理我的数据。然后我想在一个ggplot 中绘制数据集。

ss <- ss %>%
  select(date, bw, squat, deadlift, press, bench, chinup, clean) %>%
  gather(key = "lift", value = "weight", -date, -bw)

ggplot(ss, aes(x = date, y = weight)) + 
  geom_point(aes(color = lift)) +
  geom_line(aes(color = lift, linetype = lift))

My plot as of now. Oh the gaps!...

【问题讨论】:

  • 收集后丢弃 NA,例如filter(!is.na(weight)
  • @stefan 这行得通,但我不得不从集合中排除 bw,因为它主要包含 NA。谢谢你的帮助。 (你想写一个答案还是我应该自己回答我的问题?)
  • 这能回答你的问题吗? Connecting across missing values with geom_line
  • @kaos。是的。对不起。 drop_na 有点激进。过滤器是要走的路。
  • @stefan 啊,完美。谢谢!

标签: r ggplot2


【解决方案1】:

filter(!is.na(weight) 聚集后只需删除 NA:

library(dplyr)
library(tidyr)
library(ggplot2)

ss <- ss %>%
  select(date, bw, squat, deadlift, press, bench, chinup, clean) %>%
  gather(key = "lift", value = "weight", -date, -bw) %>% 
  filter(!is.na(weight))

ggplot(ss, aes(x = date, y = weight)) + 
  geom_point(aes(color = lift)) +
  geom_line(aes(color = lift, linetype = lift))

【讨论】:

  • 完美!我现在使用R 有一段时间了,但直到现在我才意识到使用管道和 tidyverse 时一切变得容易得多。
【解决方案2】:

可能不太干净的方法,但线将连接在x 轴上。因此,您可以反转绘图中的 x 和 y,然后也翻转坐标。

ggplot(ss, aes(x = weight, y = date)) + 
  geom_point(aes(color = lift)) +
  geom_line(aes(color = lift, linetype = lift)) +
  coord_flip()

【讨论】:

  • 这也是个好主意! (我还不能投票,抱歉。)
猜你喜欢
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
相关资源
最近更新 更多