在 R 中的条形图中,如何仅对选定条形的指定最右侧 x% 着色?

In a bar plot in R, how to color only a specified rightmost x% of a selected bar?

在 R 条形图中,我可以为选定的条形图着色;例如,使用如下代码:

data <- c(3,4,2,1)
colors <- rep("#ffffff", 4)
colors[2] <- "#ff0000"
barplot(data, col=colors, space=c(0,0,0,0))

问题:我如何才能仅对所选柱的指定最右边的 x% 着色, 对于 0

例如,在上面的示例中,仅对第二个条形的最右边的 70% 着色看起来像这样:

(我预计会有一个关于这个问题或类似问题的已经回答的问题——但如果有的话,我没能找到它。如果我错过了,我深表歉意。 )

您必须向条形图添加一个矩形:

out <- barplot(data, col="white", space=c(0,0,0,0))
out
#      [,1]
# [1,]  0.5
# [2,]  1.5
# [3,]  2.5
# [4,]  3.5

您有 4 个柱状图,out 列出了每个柱状图 x-axis 的中心。您想要遮蔽第二条的一部分,在 x-axis 上从 (2 - .7) 到 2,在 y-axis 上从 0 到 data[2] 或 4:

rect((2 - .7), 0, 2, 4, border=NA, col="red")
rect(1, 0, 2, 4, border="black")  # Optional to overprint the border