Как я могу сделать так, чтобы углы моих полярных координат соотносились с пропорциями экспозиции в ggplot2? - PullRequest
0 голосов
/ 19 июня 2019

Предположим, у меня есть следующие данные в R:

mydata <- data.frame(Group=1:5, Profit=seq(60, 100, by=10), 
Count=seq(50000, 10000, by=-10000))

Я могу построить гистограмму, показывающую прибыль по группам:

r1 <- ggplot(data=mydata, aes(x=Group, y=Profit, fill=Group))
r1 + 
  geom_bar(stat="identity") +
  scale_fill_gradient(low="khaki", high="turquoise4") +
  labs(title="Group 5 is the most profitable segment") 

Я также могу построить круговую диаграмму, показывающуюдоля воздействия (количество) по группам:

r2 <- ggplot(data=mydata, aes(x="", y=Count, fill=Group))
r2 + 
  geom_bar(width=1, stat="identity") +
  scale_fill_gradient(low="khaki", high="turquoise4") +
  coord_polar(theta="y", start=0) +
  labs(title="We have significant exposure in lower Groups") 

Что я хотел бы сделать, так это объединить вышеприведенное так, чтобы угол круговой диаграммы соотносился с пропорциями воздействия для каждого уровня группы в том виде, как он есть вr2, но также для увеличения / уменьшения размера каждого «среза» (то есть радиуса) в соответствии с прибылью для каждого уровня группы в r1.

Любая помощь, полученная с благодарностью.

Спасибо

1 Ответ

0 голосов
/ 19 июня 2019
library(dplyr)
mydata %>%
  mutate(end_count = cumsum(Count),  # or add "/sum(Count)" to make it "out of 100%"
         start_count = lag(end_count, default = 0)) %>%
  ggplot() +
  geom_rect(aes(xmin = start_count, xmax = end_count,
                ymin = 0, ymax = Profit, fill=Group)) +
  scale_fill_gradient(low="khaki", high="turquoise4") +
  coord_polar(theta="x", start=0) +
  labs(title="We have significant exposure in lower Groups") 

enter image description here

...