首页 > 解决方案 > 将 Barplot 的 Y 轴值居中在 0 附近

问题描述

因此,我试图为所有州创建两年间无家可归人数百分比变化的条形图。

   X1     X2
1  AK -0.025
2  AL  0.031
3  AR -0.135
4  AZ  0.187
5  CA -0.041
6  CO  0.106
7  CT  0.004
8  DC  0.046
9  DE  0.023
10 FL  0.013
11 GA  0.004
12 GU  0.208
13 HI -0.006
14 IA   0.01
15 ID -0.049
16 IL  0.059
17 IN  0.051
18 KS   0.07
19 KY  0.043
20 LA  0.136
21 MA -0.126
22 MD -0.021
23 ME   0.06
24 MI   0.03
25 MN  0.082
26 MO  0.087
27 MS  0.073
28 MT  0.092
29 NC  0.041
30 ND -0.031
31 NE  0.159
32 NH  0.021
33 NJ -0.023
34 NM  0.021
35 NV  0.159
36 NY -0.093
37 OH  0.047
38 OK   0.02
39 OR  0.127
40 PA -0.014
41 PR -0.071
42 RI  0.073
43 SC -0.075
44 SD  0.197
45 TN -0.027
46 TX  0.078
47 UT -0.007
48 VA  0.032
49 VI -0.008
50 VT  0.152
51 WA  0.028
52 WI  -0.03
53 WV  0.083
54 WY -0.045

ggplot(data = prcnt_diff_state_hmlsns, 
              aes(x=prcnt_diff_state_hmlsns$X1,y=prcnt_diff_state_hmlsns$X2)) +
       geom_bar(stat = "identity",color="blue",fill="steelblue",width = .6) + 
       scale_y_discrete(name = "Percent Change in Homelessness") +
       scale_x_discrete(name = "State") 

我使用的数据是 2 列数据框,每个州及其 2014 年至 2015 年期间无家可归者的百分比变化。显然,结果输出非常糟糕。我的意图是让图形的 y 轴以 0 为中心,以更好地显示每个状态之间的差异。相反,轴从最低值开始到最高值,在解释方面没有多大意义。

我该如何将图形的轴更改为以 0 为中心?

标签: rggplot2

解决方案


简化代码,使用geom_col而不是geom_bar,并对 x 轴进行排序:

ggplot(data = prcnt_diff_state_hmlsns,
       aes(x = reorder(X1, X2), y = X2)) +
  geom_col(fill = "steelblue", width = .6) +
  labs(x = "State", y = "Percent Change in Homelessness")

在此处输入图像描述

(我想我也设置了不同的默认主题。)

一些提示:永远不要使用data$columninside aes(),只使用不带引号的列名。对于任何基于区域的内容,请使用fillnot color。我喜欢labs()标记轴和刻度的功能。


推荐阅读