Как бы вы положили тень на поле в R?
Я создаю блокпост в R и хочу добавить тень к блоку (аналогично свойству box-shadow в CSS). Мне было интересно, возможно ли это, и если да, то как бы вы это сделали? Благодарю вас
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
предложения.