0

我在 R 中创建了一个箱线图,并希望为该框添加一个阴影(类似于 CSS 中的 box-shadow 属性)。我想知道这是否可能,如果可以,您将如何做到这一点?谢谢你

4

1 回答 1

1

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

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

这将返回一个包含对象的列表,该对象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

带阴影的箱线图

于 2018-08-30T13:29:01.873 回答