如何去掉超出坐标轴的曲线

做一个连续数值的曲线图,一部分内容超出了横坐标轴,如何把这部分在图中不显示出来

“Devil组”引证GPT后的撰写:
用 ylim 函数来设置 Y 轴坐标范围,从而将超出坐标轴的部分隐藏起来。具体来说,你可以先计算出数据中的最小值和最大值,然后将 Y 轴坐标范围设置为这个范围的扩展,例如:

# 生成一些示例数据
x <- seq(0, 100, length.out = 101)
y <- sin(x / 10) * x

# 计算数据的最小值和最大值
ymin <- min(y)
ymax <- max(y)

# 将 Y 轴坐标范围设置为最小值和最大值的扩展
ylim <- c(ymin - (ymax - ymin) * 0.1, ymax + (ymax - ymin) * 0.1)

# 绘制曲线图,并设置 Y 轴坐标范围
plot(x, y, type = "l", ylim = ylim)


上面的代码中,ylim 变量包含了 Y 轴坐标范围,它被设置为最小值和最大值的扩展,这里我们选择将坐标轴范围向上和向下扩展 10%。然后,在 plot 函数中,我们将 ylim 作为参数传递给函数,这样就可以设置 Y 轴坐标范围,从而隐藏超出坐标轴的部分。

你可以根据你的数据和需求修改这个示例代码。希望这可以帮助到你。

  1. 除了lim还有两种方法,将数据点超出的部分设置为NA。如果使用的是ggplot2包,可以使用geom_blank()或geom_point(na.rm = TRUE)来选择显不显示NA值。
  2. 将超出范围的数据点裁剪掉。将clip设置为TRUE时,将只显示在轴范围内的数据点,而将clip设置为FALSE时,将显示超出轴范围的所有数据点。
library(ggplot2)

# 创建示例数据集
x <- c(1:20)
y <- c(rnorm(10, 5, 1), rnorm(10, 10, 1))
df <- data.frame(x = x, y = y)

# 创建曲线图,并将x轴范围设置为4到16,同时裁剪超出范围的数据点
ggplot(df, aes(x = x, y = y)) +
  geom_line() +
  xlim(4, 16) +
  coord_cartesian(clip = 'off')