R 如何从最低到最高排列几何图形(ggplot)中的条形图?
下面的数据是我的数据的一小部分。我使用以下代码按类别绘制每个国家的失业率:R 如何从最低到最高排列几何图形(ggplot)中的条形图?,r,ggplot2,graph,R,Ggplot2,Graph,下面的数据是我的数据的一小部分。我使用以下代码按类别绘制每个国家的失业率: ggplot(df, aes(x=country, y=unemployment)) + geom_col(aes(fill=class)) 它工作得很好。然而,我有30个国家,并希望按顺序排列。一类失业率最低的国家应该首先出现在图表中——逐渐增加到一类失业率最高的国家。有没有一种优雅的方法可以不用手动操作就可以完成 country unemployment class 1
ggplot(df, aes(x=country, y=unemployment)) +
geom_col(aes(fill=class))
它工作得很好。然而,我有30个国家,并希望按顺序排列。一类失业率最低的国家应该首先出现在图表中——逐渐增加到一类失业率最高的国家。有没有一种优雅的方法可以不用手动操作就可以完成
country unemployment class
1 20 1
1 30 2
1 50 3
2 15 1
2 30 2
2 55 3
3 10 1
3 35 2
3 55 3
structure(list(country = structure(c(1, 1, 1, 2, 2, 2, 3, 3,
3), format.stata = "%9.0g"), unemployment = structure(c(20, 30,
50, 15, 30, 55, 10, 35, 55), format.stata = "%9.0g"), class = structure(c(1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("1", "2", "3"), class = "factor")), row.names = c(NA,
-9L), class = c("tbl_df", "tbl", "data.frame"))
因子级别的顺序将控制数据在轴上的显示方式 如果条形图没有堆叠,那么您可以使用fct_reorder按失业率对系数进行排序,但由于每个国家(按类别)有多个值,因此我首先基于过滤后的数据帧生成了country_order,然后按该顺序重新排列country
df警告:包'dplyr'是在R版本4.0.3下构建的
#>
#>正在附加包:“dplyr”
#>以下对象已从“package:stats”屏蔽:
#>
#>滤波器,滞后
#>以下对象已从“package:base”屏蔽:
#>
#>相交、setdiff、setequal、并集
图书馆(供猫用)
国家/地区订单%
过滤器(类==1)%>%
突变(国家=fct_重新排序(系数(国家),失业率,.desc=FALSE))%>%
拉力(国家)%>%
级别()
df2%
突变(国家=fct_relevel(因子(国家),国家顺序))
ggplot(df2,aes(x=国家,y=失业率))+
地理坐标(aes(填充=等级))
由(v0.3.0)于2020年11月27日创建。因子级别的顺序将控制数据在轴上的显示方式 如果条形图没有堆叠,那么您可以使用fct_reorder按失业率对系数进行排序,但由于每个国家(按类别)有多个值,因此我首先基于过滤后的数据帧生成了country_order,然后按该顺序重新排列country
df警告:包'dplyr'是在R版本4.0.3下构建的
#>
#>正在附加包:“dplyr”
#>以下对象已从“package:stats”屏蔽:
#>
#>滤波器,滞后
#>以下对象已从“package:base”屏蔽:
#>
#>相交、setdiff、setequal、并集
图书馆(供猫用)
国家/地区订单%
过滤器(类==1)%>%
突变(国家=fct_重新排序(系数(国家),失业率,.desc=FALSE))%>%
拉力(国家)%>%
级别()
df2%
突变(国家=fct_relevel(因子(国家),国家顺序))
ggplot(df2,aes(x=国家,y=失业率))+
地理坐标(aes(填充=等级))
由(v0.3.0)于2020-11-27创建的fct_reorder将实现此功能,但由于您希望指定class==1,所以它稍微复杂一些。fct_reorder将实现此功能,但由于您希望指定class==1,所以它稍微复杂一些。