В R графический движок добавляет пробелы вокруг графиков, которые печатаются, если они не заполняют размер контейнера. В этом ответе приведены многочисленные примеры кода: https://stackoverflow.com/a/47703716/3330437
и я повторяю некоторые из них здесь:
g <- ggplot(animals, aes(x = "", y = Freq, fill = Species)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y", start=0) +
theme(plot.background = element_rect(fill = "lightblue"))
library(grid)
grob <- ggplotGrob(g)
grid.newpage()
grid.draw(grob)
Мне интересно, есть ли способ, чтобы вместо пробелов это пространство-заполнитель можно было установить на определенный цвет или сделать прозрачным? Проблема не возникает, если не задано соотношение сторон сюжета, но я хотел бы иметь заданное соотношение сторон!





Одним из вариантов достижения желаемого результата было бы нарисовать rectGrob с желаемым цветом заливки и нарисовать ggplot поверх него:
set.seed(42)
animals <- as.data.frame(
table(
Species =
c(
rep("Moose", sample(1:100, 1)),
rep("Frog", sample(1:100, 1)),
rep("Dragonfly", sample(1:100, 1))
)
)
)
library(ggplot2)
library(grid)
g <- ggplot(animals, aes(x = "", y = Freq, fill = Species)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y", start=0) +
theme(plot.background = element_rect(fill = "lightblue", color = "lightblue"))
grob <- rectGrob(gp = gpar(fill = "lightblue", col = "lightblue"))
grid.newpage()
grid.draw(grob)
grid.draw(ggplotGrob(g))

Это работает абсолютно идеально - полностью решает проблему, большое спасибо !!