0

我有一些调查数据,其中我有一个因素在采访中被提及的次数,然后是这些提及中的每一个的百分比是积极的、中性的还是消极的。我想在圆形堆叠条形图中显示它,图中的每个部分都显示每个因素的响应百分比是正面/中性/负面,每个条形/片段的宽度表示与每个因素相关的响应数量因素。我已经能够使用 ggplot 和 coord_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() 

哪个产生了这个;

在此处输入图像描述

但是我想要更接近这个的东西,就填充圆圈的线段的宽度而言,然后让每个线段都像上面那样堆叠;

在此处输入图像描述

任何帮助将不胜感激!谢谢

4

2 回答 2

1

使用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)

于 2020-02-06T13:27:49.823 回答
0

远离分段饼图,我使用此示例R ggplot 堆叠 geom_rect 创建堆叠条形图,其中列的宽度表示每个因素的提及总数。

在此处输入图像描述

于 2020-02-06T16:35:14.610 回答