【发布时间】:2018-06-07 13:17:53
【问题描述】:
考虑以下示例:
library(ggplot2)
df = data.frame(x = 1:5, y = 1:5, z = c('a', 'a', 'a', 'b', 'b'))
ggplot(df, aes(x, y, col = z)) + geom_line() + geom_point() +
coord_cartesian(xlim = c(1, 2.5))
仅显示来自a 存储桶的数据,但a 和b 都出现在图例中。我该如何解决这个问题,以便只有实际绘制的存储桶出现在图例中?
对于上下文 - 我在 shiny 中尝试 zooming into plots 时遇到了这个问题。
【问题讨论】:
-
如果您在可见绘图区域之外有点,这是缩放后的情况,那么显示所有不同的点类是默认行为。
-
@Heikki haha,好吧,这不是我想要的 - 所以这个问题
-
您可以使用
shiny返回的内容来过滤数据,而不是使用coord_cartesian指定它 -
df %>% filter(between(x, 1,2)) %>% ggplot(aes(x, y, col = z)) + geom_point() -
@bouncyball/dmik3kno 谢谢!这非常接近我想要的。唯一的皱纹(在你的建议之后我现在才意识到)是我实际上正在绘制线条,如果可能的话,我想保持线条进出放大区域。我已经更新了问题中的情节——我想保留的那条线是情节右边的那条线。