r - 将 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 为中心?
解决方案
简化代码,使用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$column
inside aes()
,只使用不带引号的列名。对于任何基于区域的内容,请使用fill
not color
。我喜欢labs()
标记轴和刻度的功能。
推荐阅读
- arrays - 数据被新记录覆盖 Ionic 4
- memory-management - .Net Core 快速分配和零初始化内存(跨平台解决方案)
- python - 更改数据框列日期类型
- android - 使用 rn-fetch-blob 下载文件后如何修复 react-native(android) 中的“无法打开文件”?
- python - PyCharm 报告未使用的局部变量,但该变量在本地命名空间中使用
- sql - 在 PostgreSQL 中使用 FROM 两个表时如何显示单个表的计数?
- javascript - 对 React Hooks 的 useFetch 函数进行单一条件调用的正确方法?
- c# - 测试实体框架核心迁移
- xml - RCP 应用程序中的 Eclipse XML 编辑器不工作
- javascript - React Formik:如何使用自定义函数 onChange 和 onConfirmChange 进行请求输入