Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何从最低到最高排列几何图形(ggplot)中的条形图?_R_Ggplot2_Graph - Fatal编程技术网

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,所以它稍微复杂一些。