将Barplot的Y轴值定为0的中心

时间:2019-12-18 17:46:35

标签: r ggplot2

因此,我正在尝试创建一个在所有国家之间两年内无家可归者计数变化百分比的图表。

   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为中心的值?

1 个答案:

答案 0 :(得分:4)

使用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")

enter image description here

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

一些指针:从不data$column中使用aes(),仅使用未加引号的列名。对于任何基于区域的内容,请使用fill而不是color。我喜欢labs()函数来标注轴和刻度。