Dataframe 使用多个数据帧绘制多行时,从ggplot中忽略NA值

Dataframe 使用多个数据帧绘制多行时,从ggplot中忽略NA值,dataframe,ggplot2,na,geom,Dataframe,Ggplot2,Na,Geom,我的数据帧有时包含NA值。这些是以前导入的.csv文件中的空白字符,如“BAD”或实际的“NA”字符。我已将数据帧中的所有内容更改为数字-这将所有非数字字符更改为NA。到目前为止,一切顺利 我知道我可以使用以下数据帧“df”来确保在数据点之间始终绘制一条线,确保没有间隙: ggplot(na.omit(df), aes(x=Time, y=pH)) + geom_line() 但是,有时我希望使用ggplot2绘制2个或更多数据帧以获得单个绘图。我这样做是因为我的x轴(时间)对于所有数据帧

我的数据帧有时包含NA值。这些是以前导入的.csv文件中的空白字符,如“BAD”或实际的“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.ommit函数,命名这些新对象,然后在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")
新的、正确的代码:

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")

df1.omit因此,在玩了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")

df1.Hi省略,欢迎来到stackoverflow。如果在geom级别使用
na.omit(df*)
,是否无效?如果没有,您能提供一些虚拟数据供我们试用您的代码吗?谢谢。请参阅我的编辑以获取解决方案。我试图在geom级别使用na.omit,但它似乎不起作用,但我不确定语法是否正确。请将其作为您自己问题的答案发布。这样,搜索类似问题的人可以看到这个问题有答案。