Гистограмма с полярными координатами, настройте сужение в ggplot - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу создать оценочный сюжет, как те, которые вы часто видите в ролевых играх, с положительными и отрицательными оценками, используя ggplot.

Для этого я использую geom_col и coord_polar. Проблема заключается в том, что столбцы - это не прямоугольники, а трапеции, как и ожидалось, поскольку вся система координат пространства печати деформирована.

enter image description here

Можно ли отрегулировать это для того, чтобы иметь правильные однородные полосы (и добавить немного места в центре графика, чтобы избежать наложения)?

Бонусный запрос: вместо круглой сетки возможно ли иметь полигональную, основанную на количестве значений по оси x?

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете использовать линейные сегменты вместо столбцов. Толщина будет зависеть от выбранного размера, а не от системы координат:

# sample dataset
set.seed(333)
n.dim = 9
df <- data.frame(
  x = paste("attribute", seq(1, n.dim), sep = "."),
  score = rnorm(n.dim)
)

ggplot(df,
       aes(x = x, y = score, 
           xend = x, yend = 0,
           col = score >= 0)) +
  geom_segment(size = 15) +                 # adjust size for different bar thickness
  scale_y_continuous(expand = c(0.1, 0)) +  # increase space at plot centre
  coord_polar() +
  theme_minimal() +
  theme(legend.position = "none",
        axis.title = element_blank(),
        axis.text.y = element_blank(),
        panel.grid.major.x = element_blank())

plot

Я думаю, что многоугольную сетку (а не круглую) будет труднее интерпретировать, поскольку расстояние от центра графика больше не имеет отношения один к одному со значениями оси y. (См. Иллюстрацию ниже) Возможно, в ggplot возможно взломать что-то похожее на многоугольную сетку, но я сам пока не видел такой реализации.

plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...