R和ggplot 2:如何在ggplot2 R图中设置轴的分位数限制?

时间:2018-06-13 09:11:22

标签: r ggplot2

我正在尝试使用分位数来限制x轴的前99个分位数,以获得类似于下面的散点图(仅用于说明目的 - 右边的绘图是使用xlim上的固定限制0,500创建的):

ggplot(aes(x=volume,y=log10(price)),data= diamonds)+
  geom_point()+
  coord_cartesian(xlim = c(0,500))

enter image description here

ggplot(aes(x=volume,y=log10(price)),data= diamonds)+
  geom_point()+
  coord_cartesian(xlim = c(quantile(diamonds$volume<diamonds$volume, 0.99)))

产生这个:

scatterplot fig1.

ggplot(aes(x=volume,y=log10(price)),data= diamonds)+
  geom_point()+
  coord_cartesian(xlim = c(quantile(diamonds$volume, 0.99)))

产生这个:

enter image description here

我想避免篡改实际数据或创建新数据集。谁能指出我出错的地方?

scale_x_continuous(limits = c(quantile(diamonds$volume, 0.99)))

产生非常相似的结果,所以我怀疑问题是我如何定义分位数。

1 个答案:

答案 0 :(得分:2)

问题是xlim期望一个包含两个元素的向量:min和max。

max由quantile(diamonds$x, 0.99)定义 而min可以是min(diamonds$x)

library(ggplot2)
data(diamonds)

ggplot(aes(x=x,y=log10(price)),data= diamonds)+
  geom_point()+
  coord_cartesian(xlim = c(min(diamonds$x), quantile(diamonds$x, 0.99)))

enter image description here

我使用x代替volume,因为我的diamonds(2.2.1)版本中的ggplot2数据集不包含volume