Это, безусловно, непопулярный выбор с точки зрения эстетики графов, но если по какой-то причине вам это нужно, одним из простых способов добиться эффекта было бы просто нарисовать несколько серых прямоугольников под прямоугольниками. Вот быстрый и грязный пример использования набора данных 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
.