我遍历多个数据集以生成每个集合的线图。当我使用ggplot
超过一点时,如何防止geom_line
抱怨?
例如,以下数据:
mydata = data.frame(
x = c(1, 2),
y = c(2, 2),
group = as.factor(c("foo", "foo"))
)
创建折线图看起来很好,因为该行中有两点:
ggplot(mydata, aes(x = x, y = y)) +
geom_point() +
geom_line(aes(group = group))
然而,只绘制第一行给出了消息:
geom_path:每组只包含一个观察。你需要调整群体审美吗?
ggplot(mydata[1,], aes(x = x, y = y)) +
geom_point() +
geom_line(aes(group = group))
我的一些数字只会有一个点,而这些消息会导致产生这些数字的更大脚本中的挂起。我知道情节仍然有效,所以我的担忧是避免这个消息。如果出现其他合法且意外的问题,我还是希望尽可能避免使用suppressWarnings()
。
答案 0 :(得分:1)
对this question的回答:suppressMessages(ggplot())失败,因为你必须将它包装在ggplot对象的print()调用周围 - 而不是ggplot对象本身。这是因为警告/消息仅在绘制对象时发生。
因此,要在没有警告消息的情况下查看您的情节:
p <- ggplot(mydata[1,], aes(x = x, y = y)) +
geom_point() +
geom_line(aes(group = group))
suppressMessages(print(p))
答案 1 :(得分:0)
我认为以下if
- else
解决方案可以解决问题:
if (nrow(mydata) > 1) {
ggplot(mydata, aes(x = x, y = y)) +
geom_point() +
geom_line(aes(group = group))
} else {
ggplot(mydata, aes(x = x, y = y)) +
geom_point()
}
答案 2 :(得分:0)
在community.RStudio.com上,John Mackintosh提出了一个对我有用的解决方案:
自由引用:
与其取消警告,不如稍微更改绘图层。
用Facet包裹以创建空图
为整个数据框添加geom_point
通过创建一个包含多个数据点的组的向量,并对这些组的原始数据进行过滤,来对数据帧进行分组。只要 为该子集绘制线。
上面链接的后续内容中的详细信息和示例代码。