如何固定轴限制的一侧?

时间:2014-07-24 20:03:28

标签: r ggplot2

我有一个正x和y值的数据框,我想在ggplot2中作为散点图显示。这些值远离点(0,0)聚集,但我想在图中包含x = 0和y = 0线以显示总体幅度。我怎么能这样做?

set.seed(349)
d <- data.frame(x = runif(10, 1, 2), y = runif(10, 1, 2))
ggplot(d, aes(x,y)) + geom_point()

Plot without (0,0)

但我想要的是大致相当于此的东西,而不必指定限制的两端:

ggplot(d, aes(x=x, y=y)) + geom_point() + 
  scale_x_continuous(limits = c(0,2)) + scale_y_continuous(limits = c(0,2))

Plot with (0,0)

2 个答案:

答案 0 :(得分:5)

一种选择是仅锚定x和y min,但保留max unspecified

ggplot(d, aes(x,y)) + geom_point() +
  scale_x_continuous(limits = c(0,NA)) + 
  scale_y_continuous(limits = c(0,NA))

答案 1 :(得分:1)

此解决方案有点hacky,但它也适用于标准plot

d是原始数据框,我们添加两个&#34;假&#34;数据点:

d2 = rbind(d,c(0,NA),c(NA,0))

该第一个额外数据点具有x坐标= 0和y坐标= NA。这意味着0将包含在xlim中,但不会显示该点(因为它没有y坐标)。

对于y限制,其他数据点的作用相同。

只需绘制d2而不是d,它就可以正常工作。

如果使用ggplot而非plot,则会收到有关缺失值的警告。将geom_point()替换为geom_point(na.rm=T)

可以取消此操作

此解决方案的一个缺点(特别是对于plot)是必须为任何其他“数据点”添加额外的值。参数,例如col=,如果您为每个点指定不同的颜色。