Как бы вы положили тень на поле в R? - PullRequest
0 голосов
/ 30 августа 2018

Я создаю блокпост в R и хочу добавить тень к блоку (аналогично свойству box-shadow в CSS). Мне было интересно, если это было возможно, и если да, то как бы вы это сделали? Спасибо

1 Ответ

0 голосов
/ 30 августа 2018

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

boxplot with shadows

...