你会如何在 R 中的箱线图上放置阴影?

How would you put a shadow on a boxplot in R?

我正在 R 中创建一个箱形图,并想为箱子添加阴影(类似于 CSS 中的箱形阴影 属性)。我想知道这是否可行,如果可行,您会怎么做?谢谢

就图形美学而言,这当然是一个不受欢迎的选择,但如果出于某种原因您确实需要这样做,实现该效果的一种简单方法是在框下方绘制一些灰色矩形。这是一个使用 mtcars 数据集的简单示例。

#Plot and save the dimensions of the boxes   
b <- boxplot(mpg~cyl,data=mtcars)

这将 return 一个包含对象 stats 的列表,该对象包含第二行和第四行中框的 y 坐标。默认设置是在 x=1 处绘制第一个框,宽度为 0.8,因此从 x=0.6 到 x=1.4 等等。

#Pick some arbitrary offsets
xoffset <- 0.03
yoffset <- 0.3

#Add a dark gray rectangle slightly offset to each box
rect(0.6+xoffset, b$stats[2,1]-yoffset, 1.4+xoffset, b$stats[4,1]-yoffset, col="darkgray", border=NA)

rect(1.6+xoffset, b$stats[2,2]-yoffset, 2.4+xoffset, b$stats[4,2]-yoffset, col="darkgray", border=NA)

rect(2.6+xoffset, b$stats[2,3]-yoffset, 3.4+xoffset, b$stats[4,3]-yoffset, col="darkgray", border=NA)

#Replot the same boxplot on top of the rectangles using the `add=TRUE` argument. 
boxplot(mpg~cyl,data=mtcars, xlab="Number of Cylinders", ylab="Miles Per Gallon",
        add=TRUE) 

您可能需要进行一些调整,使阴影与框的大小成比例。艺术不是我的事所以老实说我不确定它应该如何与光源和透视等一起工作。同样,你可能不想这样做,但你可以自己尝试一下并看看它如何比较R 提供的其他更好的绘图选项。