我想绘制一些虚拟数据的结果(见下文)。我想使用(堆叠的条形图和ggplot2)
该图应区分配置文件(facet_grid(Profile~.)
),并按问题类别以堆积的条形图显示答案值的结果。我使用了以下代码:
ggplot(profile_results, aes(x=Question, fill=Answer, y=Value)) +
geom_bar( stat="identity") +
scale_fill_brewer(palette = "Set1") +
coord_flip() +
facet_grid(Profile~.)
我还尝试将因素用于我的答案类别 my_levels = c(“完全不同意”,“不同意”,“不确定”,“同意”,“完全同意”) profile_results $ Answer <-factor(profile_results $ Answer,level = my_levels)
,没有任何结果。
我还使用了aes()
订单选项(order=Answer
),但没有成功。
我想念什么?
===编辑1 重新排序结果(如@Rohit所建议的)也无济于事。
my_levels = c("Strongly Disagree", "Disagree", "Undecided", "Agree", "Strongly Agree")
profile_results$Answer <- ordered(profile_results$Answer, my_levels)
profile_results= profile_results[order(profile_results$Answer),]
ggplot(profile_results, aes(x=Question, fill=Answer, y=Value, ordered=TRUE)) +
geom_bar( stat="identity") +
scale_fill_brewer(palette = "Set1") +
coord_flip() +
facet_grid(Profile~.)
===编辑2
请在https://pastebin.com/igFiaBTR此处找到dput
(短路)
Profile Question Answer Value
2 technical expect Strongly Disagree 0.166666666666667
6 technical expect Strongly Agree 0.166666666666667
7 technical help Strongly Disagree 0.166666666666667
11 technical help Strongly Agree 0.166666666666667
12 technical understand Strongly Disagree 0.166666666666667
17 technical clear Strongly Disagree 0.333333333333333
18 technical clear Disagree 0.25
19 technical clear Undecided 0.166666666666667
20 technical clear Agree 0.0833333333333333
21 technical clear Strongly Agree 0.166666666666667
22 Tracking expect Strongly Disagree 0.0833333333333333
23 Tracking expect Disagree 0.166666666666667
24 Tracking expect Undecided 0.0833333333333333
49 Interest help Undecided 0.0833333333333333
50 Interest help Agree 0.333333333333333
51 Interest help Strongly Agree 0.0833333333333333
52 Interest understand Strongly Disagree 0.166666666666667
53 Interest understand Disagree 0
54 Interest understand Undecided 0.0833333333333333
55 Interest understand Agree 0.416666666666667
56 Interest understand Strongly Agree 0.333333333333333
57 Interest clear Strongly Disagree 0.166666666666667
58 Interest clear Disagree 0.166666666666667
59 Interest clear Undecided 0.25
60 Interest clear Agree 0.333333333333333
61 Interest clear Strongly Agree 0.0833333333333333
答案 0 :(得分:3)
这是因为您的Value
变量的类型为character
。首先转换为数字将使您可以使用factor
级别对条形进行排序。
profile_results$Value <- as.numeric(profile_results$Value)
my_levels = c("Strongly Disagree", "Disagree", "Undecided", "Agree", "Strongly Agree")
profile_results$Answer <- factor(profile_results$Answer, my_levels)
ggplot(profile_results, aes(x=Question, fill=Answer, y=Value)) +
geom_bar( stat="identity") +
scale_fill_brewer(palette = "Set1") +
coord_flip() +
facet_grid(Profile~.)
答案 1 :(得分:0)
这似乎可以解决您的问题:
if let ind = country.firstIndex(of: "America"){
country[ind] = "US"
}