用于绘制具有唯一 R 范围的多条线段的 R 代码

R code for plotting multiple line segments with unique R ranges

我知道这里有很多关于在 R 图中绘制多条线的问题,但我一直在努力完成更具体的任务。我想仅使用为每条线指定的截距和斜率将多个线段添加到图形中。 abline() 对此非常有用,除了每条线在 X 轴上都有一个特定范围,我不希望绘制的线超出范围。

我设法使用 plotrix 获得了我想要的图表,但我希望发布该作品,但该图表看起来并不符合标准(非常基本)。我对 ggpplot 有点熟悉,并且认为在 ggplot 中生成的图表看起来比我所做的要好得多,尤其是在各种主题可用的情况下,但我不知道如何使用 ggplot 做类似的事情。

代码:

图书馆(plotrix)

plot(1, type="n", xlab="PM2.5(ug/m3)", ylab="LogRR 先兆子痫", xlim=c(0, 20), ylim=c( -1, 2.5))

ablineclip(a = 0, b = 0.3, x1=1.2, x2=3)

ablineclip(a = 0, b = 0.08, x1=8.0, x2=13.1)

ablineclip(a = 0, b = 0.5, x1=10.1, x2=18.9)

ablineclip(a = 0, b = 0.12, x1=2.6, x2=14.1)

如有任何帮助,我们将不胜感激!

谢谢。

您可以编写一个基本函数,执行一些代数运算来计算线段的 start/stop 个点,然后将其输入 ggplot。例如

to_points <- function(intercept, slope, start, stop) {
  data.frame(
    segment = seq_along(start),
    xstart = start,
    xend = stop,
    ystart = intercept + slope*start,
    yend = intercept + slope*stop)
}

然后将其与

一起使用
library(ggplot2)
segments <- to_points(0, c(0.3, 0.08, 0.5, .12),
          c(1.2, 8.0, 10.1, 2.6),
          c(3, 13.1, 18.9, 14.2))
ggplot(segments) + 
  aes(xstart, ystart, xend=xend, yend=yend) + 
  geom_segment() + 
  coord_cartesian(xlim=c(0,20), ylim=c(-1, 2.5)) + 
labs(x="PM2.5(ug/m3)", y="LogRR Preeclampsia ")

这将产生以下情节

(请注意第三段在您指定的区域之外。您可以放下 coord_cartesian 以查看所有段。)