Могу ли я изменить ширину столбцов в круговом столбце, не имея затем промежутков между столбцами в ggplot? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть некоторые данные опроса, где у меня есть количество упоминаний фактора во время интервью, а затем процент от того, сколько из этих упоминаний является либо положительным, нейтральным или отрицательным. Я хотел бы отобразить это в круговой диаграмме с накоплением, где каждый сегмент графика показывает процент ответов для каждого фактора, которые являются положительными / нейтральными / отрицательными, а ширина каждого столбца / сегмента представляет количество ответов, относящихся к каждому фактор. Я смог добиться этого, используя ggplot иordin_polar, но проблема, с которой я столкнулся, заключается в том, что каждый фактор вокруг круга равномерно распределен, оставляя зазор между столбиками. Но мне было интересно, можно ли изменить положение этих факторов вокруг круга, в результате чего получается «полный» график p ie с сегментами разных размеров, но без промежутков между ними?

Это то, что я ' мы уже сделали;

data <- data.frame(Factor = c("One", "Two", "Three", "Four", "Five", "Six"),  
                   responses = c(23,16,8,16,17,20), 
                   positive = c(65.2,56.3,25,68.8,76.4,50),
                   neutral =c(30.4,12.5,25,12.5,17.6,20),
                   negative=c(4.3,31.3,50,18.8,5.9,30))

data2 <-melt(data, id=c("Factor","responses"))

data2$Factor <- factor(data2$Factor, levels = c("One", "Two", "Three", 
                                                "Four", "Five","Six"))


ggplot(data2) +
  geom_bar(aes(Factor, value, fill=variable, width=responses/25), stat="identity", alpha=0.5) +
  coord_polar() 

Кто произвел это;

enter image description here

Но я бы хотел кое-что ближе к этому, в с точки зрения ширины сегментов, заполняющих круг, но затем, чтобы каждый сегмент был сложен, как указано выше;

enter image description here

Любая помощь будет принята с благодарностью! Спасибо

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Используйте width. Вы устанавливаете его в aes() и игнорируете предупреждение о том, что оно не используется.

library("reshape2")
library("ggplot2")

data <- data.frame(Factor = c("One", "Two", "Three", "Four", "Five", "Six"),  
                   responses = c(23,16,8,16,17,20), 
                   positive = c(65.2,56.3,25,68.8,76.4,50),
                   neutral =c(30.4,12.5,25,12.5,17.6,20),
                   negative=c(4.3,31.3,50,18.8,5.9,30))

data2 <-melt(data, id=c("Factor","responses"))

data2$Factor <- factor(data2$Factor, levels = c("One", "Two", "Three", 
                                                "Four", "Five","Six"))


ggplot(data2) +
  geom_bar(aes(Factor, value, fill=variable), width = 1, stat="identity", alpha=0.5) +
  coord_polar() 

Это лучшая версия того же графика.


ggplot(data2) +
  geom_bar(aes(Factor, value, fill=variable), stat="identity", alpha=0.5)

0 голосов
/ 06 февраля 2020

Отойдя от сегментированной диаграммы p ie Я использовал этот пример R ggplot Stacked geom_rect , чтобы создать гистограмму с накоплением, где ширина столбцов представляет общее количество упоминаний каждого фактора.

enter image description here

...