【发布时间】:2017-12-05 22:42:54
【问题描述】:
我有几个关于外交政策态度的李克特式调查问题,包括叙利亚 (syria_threat)、朝鲜 (nk_threat) 和英国脱欧 (brexit)。每个响应都被编码为一个因素:“无威胁”、“轻微威胁”、“中等威胁”、“高威胁”和“严重威胁”。下面给出了一个最小的数据示例
#Reading the data#
syria_threat<-c("High Threat", "Slight Threat", "Slight Threat", "Medium Threat")
nk_threat<-c("Grave Threat", "Grave Threat", "High Threat", "Medium Threat")
brexit<-c("Medium Threat", "Slight Threat", "Slight Threat", "No Threat")
data<-cbind.data.frame(syria_threat, nk_threat, brexit)
#Showing the structure of the data
data
syria_threat nk_threat brexit
1 High Threat Grave Threat Medium Threat
2 Slight Threat Grave Threat Slight Threat
3 Slight Threat High Threat Slight Threat
4 Medium Threat Medium Threat No Threat
我想创建一堆直方图密度图,以可视化每个威胁/危机的感知威胁。因此,对于每个问题(叙利亚、朝鲜和英国退欧),我都会有一个从无威胁到坟墓的直方图堆叠在一起。并非所有问题都具有相同的价值(即,没有人将英国脱欧视为“严重威胁”)。我希望它看起来像这个问题的答案Multiple histograms in ggplot2(但直方图条旋转了 90 度https://i.stack.imgur.com/3CPOS.png)。
我正在使用以下代码:
ggplot(melt(data), aes(x=as.factor(value), fill=as.factor(value))) +
geom_bar() + xlab("") +
scale_fill_discrete("Threat")
我收到以下错误消息:
Using syria_threat, nk_threat, brexit as id variables
Error in is.factor(x) : object 'value' not found
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
如果您查看
melt(data)的输出,您会发现它并没有重塑数据集。melt假定所有字符变量都是 id 变量,除非你另有说明,所以试试melt(data, measure = 1:3)之类的。 -
谢谢...我做到了。我只得到所有三个变量组合的直方图。不是每个问题都分解出三个直方图,一个在另一个之上。
标签: r ggplot2 histogram stacked-chart