R 如何在限制x轴范围的同时更改x轴刻度?

R 如何在限制x轴范围的同时更改x轴刻度?,r,ggplot2,R,Ggplot2,我想从-4,-1绘制以下示例数据帧: test_x <- c(-3.5, -2, -1, -0.5) test_y <- c(1,2,3,4) df <- data.frame(x=test_x, y=test_y) library(ggplot2) ggplot(df, aes(x=x, y=y)) + geom_point() + xlim(-4, -1) 但是,这不会显示a勾号,也不会排除-0.5处的点。尝试使用x_lim再次限制它会导致错误 “x”的比例已

我想从-4,-1绘制以下示例数据帧:

test_x <- c(-3.5, -2, -1, -0.5)
test_y <- c(1,2,3,4)
df <- data.frame(x=test_x, y=test_y)
library(ggplot2)
ggplot(df, aes(x=x, y=y)) + 
  geom_point() +
  xlim(-4, -1)

但是,这不会显示
a
勾号,也不会排除-0.5处的点。尝试使用x_lim再次限制它会导致错误 “x”的比例已存在。为“x”添加另一个刻度,它将替换现有刻度


如何在限制x轴范围的同时更改x轴刻度?

使用刻度内的限制:

ggplot(df, aes(x = x, y = y)) + 
  geom_point() +
  scale_x_continuous(breaks = c(-4, -3, -2, -1),
                     labels = c("a", "b", "c", "d"),
                     limits = c(-4, -1))
注意,通过应用限制
c(-4,-1)
我们降低了一个点,因此我们将得到一个警告:

警告消息:已删除1行,其中包含缺少的值(几何点)


作为
限制
的替代方法,您还可以使用
坐标笛卡尔(xlim=c(-4,-1))
,它不会像设置限制那样更改基础数据(因此,您也不会收到有关删除行的警告):


问题是你为什么要这么做。如果
x
实际上是连续的,则用字母标记x值会使读者无法获得有关点之间距离的信息。
ggplot(df, aes(x = x, y = y)) + 
  geom_point() +
  scale_x_continuous(breaks = c(-4, -3, -2, -1),
                     labels = c("a", "b", "c", "d"),
                     limits = c(-4, -1))
ggplot(df, aes(x=x, y=y)) + 
  geom_point() +
  scale_x_continuous(breaks = c(-4, -3, -2, -1),
                     labels = c("a", "b", "c", "d")) +
  coord_cartesian(xlim = c(-4, -1))