0

我的数据框有时包含 NA 值。这些以前是空白字符,例如“BAD”之类的字符或来自导入的 .csv 文件的实际“NA”字符。我已将数据框中的所有内容更改为数字 - 这会将所有非数字字符更改为 NA。到目前为止,一切都很好。

我知道我可以使用以下数据框'df'来确保始终在数据点之间绘制一条线,确保没有间隙:

ggplot(na.omit(df), aes(x=Time, y=pH)) +
  geom_line()

但是,有时我希望使用 ggplot2 绘制 2 个或更多数据帧来获得单个图。我这样做是因为我的 x 轴(时间)对于所有数据帧确实是相同的,但具体数字不同。我在合并这些数据帧时遇到了巨大的麻烦,因为行不相等。否则我会合并,融化数据并正常使用 ggplot2 来制作多线线图。

从那以后,我了解到您可以在“几何级别”的 ggplot 上手动绘制多个数据框:

ggplot() + 
  geom_line(df1, aes(x=Time1, y=pH1), colour='green') + 
  geom_line(df2, aes(x=Time2, y=pH2), colour='red') +
  geom_line(df3, aes(x=Time3, y=pH3), colour='blue') +
  geom_line(df4, aes(x=Time4, y=pH4), colour='yellow')

但是,我现在如何确保省略 NA 值并连接线路?!这一切似乎都有效,但我的 4 个地块在 NA 值所在的地方有差距!

我是 R 的新手,但到目前为止我很享受它,并且意识到通常有多种解决方案可以解决一个问题。任何帮助或建议表示赞赏。

编辑(对于以后看到这个的任何人)

因此,在玩了 30 分钟后,我意识到我可以首先在每个数据帧上分别使用 no.omit 函数,命名这些新对象,然后将它们绘制在 ggplot 上。这工作正常。另外,如果我想要一个合适的图例,上面的代码无论如何都是不正确的。

新的,正确的代码:

df1.omit <- na.omit(df1)
df2.omit <- na.omit(df2)
df3.omit <- na.omit(df3)
df4.omit <- na.omit(df4)

ggplot() + 
  geom_line(df1.omit, aes(x=Time1, y=pH1, colour="Variable 1") + 
  geom_line(df2.omit, aes(x=Time2, y=pH2, colour="Variable 2") +
  geom_line(df3.omit, aes(x=Time3, y=pH3, colour="Variable 3") +
  geom_line(df4.omit, aes(x=Time4, y=pH4, colour="Variable 4")
4

1 回答 1

1

因此,在玩了 30 分钟后,我意识到我可以首先在每个数据帧上分别使用 no.omit 函数,命名这些新对象,然后将它们绘制在 ggplot 上。这工作正常。另外,如果我想要一个合适的图例,上面的代码无论如何都是不正确的。

df1.omit <- na.omit(df1)
df2.omit <- na.omit(df2)
df3.omit <- na.omit(df3)
df4.omit <- na.omit(df4)

ggplot() + 
  geom_line(df1.omit, aes(x=Time1, y=pH1, colour="Variable 1") + 
  geom_line(df2.omit, aes(x=Time2, y=pH2, colour="Variable 2") +
  geom_line(df3.omit, aes(x=Time3, y=pH3, colour="Variable 3") +
  geom_line(df4.omit, aes(x=Time4, y=pH4, colour="Variable 4")
于 2021-02-06T12:41:11.430 回答