Могу ли я изменить ширину полос на круговой диаграмме без промежутков между полосами в ggplot?

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

Это то, что я делал до сих пор;

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() 

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

введите описание изображения здесь

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

введите описание изображения здесь

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


person J. Cee    schedule 06.02.2020    source источник
comment
Этот сюжет был бы более информативным, не закручивая его в круг. Я, по крайней мере, в некоторой степени согласен с простыми круговыми диаграммами, но и радиальное сегментирование - это полный беспорядок.   -  person alan ocallaghan    schedule 06.02.2020


Ответы (2)


Используйте 1_. Вы устанавливаете его в 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)

person alan ocallaghan    schedule 06.02.2020
comment
Единственная проблема с первым графиком заключается в том, что, хотя весь круг заполнен, каждый из сегментов имеет одинаковый размер, но я хотел знать, можете ли вы изменить способ отображения факторов на графике, чтобы они не были равномерно распределены. и размер каждого сегмента варьируется в зависимости от количества записанных ответов. Но, как вы говорите, это может быть проще, чем гистограмма с полосами разной ширины, которую я могу создать. Спасибо хоть. - person J. Cee; 06.02.2020
comment
По сути, это плохой график в виде круговой диаграммы, сегментированной по радиусу. - person alan ocallaghan; 06.02.2020
comment
Чтобы уточнить, @alanocallaghan говорит, что сюжет плохой, потому что радиальная сегментация означает, что категория, которая наиболее удалена от круга, имеет чрезмерно большую площадь, поэтому похоже, что доля положительных отзывов намного выше, чем есть на самом деле. Построенный им график столбиков показывает вещи без искажения относительных пропорций. - person qdread; 06.02.2020
comment
Спасибо, я понимаю и ценю недостатки радиальной сегментации, и я понимаю, почему столбчатая диаграмма с накоплением лучше представляет эти данные (мне все еще было любопытно, можно ли изменить расположение сегментов). Но да, я пока буду придерживаться гистограммы и отрегулирую ширину полос, чтобы показать количество ответов, которые они представляют. - person J. Cee; 06.02.2020

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

введите описание изображения здесь

person J. Cee    schedule 06.02.2020