R 在ggplot中重新排序数据会导致数据和条形图之间不匹配
我根据对一项调查的回复获得以下数据:R 在ggplot中重新排序数据会导致数据和条形图之间不匹配,r,ggplot2,R,Ggplot2,我根据对一项调查的回复获得以下数据: 1 ABSENCE OF BULLYING 0.665 2 SENSE OF SAFETY 0.614 3 FAIRNESS OF DISCIPLINE 0.677 4 FEELINGS OF EMOTIONAL SAFETY 0.585 5 PERCEPTION OF EQUITABLE TREATMENT 0.691 6 COMFORT OF PHYSICAL ENVIRONM
1 ABSENCE OF BULLYING 0.665
2 SENSE OF SAFETY 0.614
3 FAIRNESS OF DISCIPLINE 0.677
4 FEELINGS OF EMOTIONAL SAFETY 0.585
5 PERCEPTION OF EQUITABLE TREATMENT 0.691
6 COMFORT OF PHYSICAL ENVIRONMENT 0.509
我想用这些数据创建一个条形图,并减少标签中多余的文本,因此我做了以下工作:
fig4 = read_excel(data)
order = c("bullying", "safety", "discipline", "emotional", "equity", "environment")
fig4$domain = as.factor(order)
levels(fig4$domain) = order
ggplot(fig4, aes(x = reorder(domain, desc(domain)), y = pct_responses)) +
geom_bar(position = "dodge", stat="identity", width=0.5, fill="#3bbae0") +
vertical_theme +
labs(y = "% of Affirmative Responses", x = "") +
scale_y_continuous(expand = c(0,0),
limits = c(0,1),
breaks = seq(0,1,0.2),
labels = function(x) paste0(x*100, "%")) +
coord_flip() +
geom_text(aes(label= paste0(round(pct_responses*100),"%")), position = position_dodge(width = 0.5), size=scale_factor * 6, hjust=-0.25)
但是,这会创建一个条形图,其中条形图与右轴标签不匹配。第2、3和6行的编号错误
我通过使用以下代码解决了此问题:
fig4$domain = c("bullying", "safety", "discipline", "emotional", "equity", "environment")
fig4$domain = factor(fig4$domain, levels = fig4$domain)
这就解决了问题。然而,我不知道为什么我第一次这样做会弄乱我的图表。有人能解释一下发生了什么事吗 使用图4$domain=as.factor(order)时,级别按字母顺序排列
levels(图4$domain)=order
然后用order
中的级别覆盖级别(在新的排序中)(在旧的排序中)。这样分配级别是危险的,您应该使用因子
中的级别
和标签
参数。因此fig4$domain我现在可以看到,虽然“x”轴按我希望的顺序重新排序,“y”轴仍按旧的字母顺序排列。因此levels()对fig4$domain进行了重新排序,但没有对fig4$pct_响应进行重新排序。但是为什么我用另一种方式做呢?