首页 > 解决方案 > R 和 ggplot 2:如何在 ggplot2 R 图中设置轴的分位数限制?

问题描述

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

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

在此处输入图像描述

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

产生这个:

散点图 Fig1.

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

产生这个:

在此处输入图像描述

我想避免篡改实际数据或创建新数据集。谁能指出我哪里出错了?

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

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

标签: rggplot2

解决方案


问题是xlim需要一个包含两个元素的向量:最小值和最大值。

最大值由定义,quantile(diamonds$x, 0.99) 而最小值可以是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)))

在此处输入图像描述

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


推荐阅读