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_响应进行重新排序。但是为什么我用另一种方式做呢?