【问题标题】:Shade part of an R plot对 R 图的一部分进行着色
【发布时间】:2012-06-28 17:22:54
【问题描述】:

我正在尝试在 R 中制作一个图,其中一部分图为灰色以强调该区域。与其他示例不同,我不想为绘图下的区域着色,而是为绘图上的一个区域着色,该区域从一个区域开始一直到图表的末尾。当我尝试使用 rect() 或 polygon() 时,它会掩盖我想要强调的情节。

例如:

x_mean <- c(1, 2, 3, 4)
y_mean <- c(1, 1, 1, 1)

y_max <- c(4, 4, 4, 4)
y_min <- c(-4, -4, -4, -4)


x_shade <- c(2, 3, 4)

y_max_shade <- c(4, 4, 4)
y_min_shade <- c(-4, -4, -4)

plot(x=rep(x_mean, 3), y=c(y_mean, y_max, y_min), bty='n', type="n" )
arrows(x0=x_mean, y0=y_min, x1=x_mean, y1=y_max, length=0)
points( x=x_mean, y=y_mean, pch=16)

这将在图表上绘制 4 条线。如何在背景中从第 2 行到绘图末尾绘制一个灰色框?

【问题讨论】:

  • R 图形使用笔+纸模型,这意味着稍后绘制的对象之前的对象之上绘制。尝试先用rect() 绘图,然后绘制你想要的点和线。

标签: r plot


【解决方案1】:

为了让您得到的不仅仅是评论,这里有一个可能的解决方案:

plot(x=rep(x_mean, 3), y=c(y_mean, y_max, y_min), bty='n', type="n" )
rect(2,-4,4,4,col = rgb(0.5,0.5,0.5,1/4))
arrows(x0=x_mean, y0=y_min, x1=x_mean, y1=y_max, length=0)
points( x=x_mean, y=y_mean, pch=16)

请注意,我还演示了如何在颜色规范中使用 alpha 混合(使用 rgb)。这对这类事情也很有用。尝试将rect 行移动到末尾,并注意结果看起来还不错,因为填充颜色是部分透明的。

【讨论】:

  • 感谢您告诉我有关使用 rgb 的信息,这将派上用场。
【解决方案2】:

我发现this answer 非常适合为 R 的背景部分着色。

一些上下文:

panel.first = rect(c(1,7), -1e6, c(3,10), 1e6, col='green', border=NA)

前两个参数c(1,7) 是阴影矩形的起始值,后面的参数c(3,10) 是阴影结束的位置。这会从 1-3 和 7-10 创建一个阴影区域。

【讨论】:

    猜你喜欢
    • 2020-08-15
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 2016-10-15
    • 2021-10-01
    • 2012-12-12
    相关资源
    最近更新 更多