Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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(几何图形条)未根据数值对y轴进行排序_R_Ggplot2 - Fatal编程技术网

R ggplot(几何图形条)未根据数值对y轴进行排序

R ggplot(几何图形条)未根据数值对y轴进行排序,r,ggplot2,R,Ggplot2,我试图根据总体值对y轴进行数字排序。我尝试过其他stackoverflow答案,建议将列重新排序/转换为数字数据类型(as.numeric),但这些解决方案似乎对我不起作用 在不使用“重新排序”的情况下,绘图按字母顺序排序: 使用“重新排序”,打印按如下方式排序: 我正在使用的代码: library(ggplot2) library(ggpubr) library(readr) library(tidyverse) library(lemon) library(dplyr) pop_dat

我试图根据总体值对y轴进行数字排序。我尝试过其他stackoverflow答案,建议将列重新排序/转换为数字数据类型(as.numeric),但这些解决方案似乎对我不起作用

在不使用“重新排序”的情况下,绘图按字母顺序排序:

使用“重新排序”,打印按如下方式排序:

我正在使用的代码:

library(ggplot2)
library(ggpubr)
library(readr)
library(tidyverse)
library(lemon)
library(dplyr)

pop_data <- read_csv("respopagesextod2011to2020.csv")
temp2 <- pop_data %>% filter(`Time` == '2019')
ggplot(data=temp2,aes(x=reorder(PA, Pop),y=Pop)) +  geom_bar(stat='identity') + coord_flip()
库(ggplot2)
图书馆(ggpubr)
图书馆(readr)
图书馆(tidyverse)
图书馆(柠檬)
图书馆(dplyr)

pop_data所有函数都按预期工作-您没有看到预期结果的原因是
reorder()
函数根据集合中的每个观察值指定了
pop_data$PA
的顺序,而您正在绘制的条形图是
pop_data
的汇总统计结果

最简单的解决方案可能是首先执行汇总,然后对汇总的数据集进行绘图和重新排序。这样,重新排序反映了汇总数据的排序,这正是您所需要的

temp3 <- pop_data %>% filter(`Time` == '2019') %>%
  group_by(PA) %>%
  summarize(Pop = sum(Pop))

ggplot(data=temp3, aes(x=reorder(PA, Pop),y=Pop)) +
  geom_bar(stat='identity') + coord_flip()
temp3%过滤器(`Time`='2019')%>%
组别(PA)%>%
汇总(Pop=汇总(Pop))
ggplot(数据=temp3,aes(x=重新排序(PA,Pop),y=Pop))+
几何图形条(stat='identity')+坐标翻转()

所有函数都按预期工作-您没有看到预期结果的原因是
reorder()
函数根据集合中的每个观察值指定了
pop\u数据$PA
的顺序,而您绘制的条形图是
pop\u数据
的汇总统计结果

最简单的解决方案可能是首先执行汇总,然后对汇总的数据集进行绘图和重新排序。这样,重新排序反映了汇总数据的排序,这正是您所需要的

temp3 <- pop_data %>% filter(`Time` == '2019') %>%
  group_by(PA) %>%
  summarize(Pop = sum(Pop))

ggplot(data=temp3, aes(x=reorder(PA, Pop),y=Pop)) +
  geom_bar(stat='identity') + coord_flip()
temp3%过滤器(`Time`='2019')%>%
组别(PA)%>%
汇总(Pop=汇总(Pop))
ggplot(数据=temp3,aes(x=重新排序(PA,Pop),y=Pop))+
几何图形条(stat='identity')+坐标翻转()

非常感谢您对此的深入解释!今天我确实学到了一些关于r的新知识:-)如果不太麻烦的话,我可以澄清一下“基于集合中的每个观察值排序”是什么意思吗?这样想:如果您的数据集是excel表,
reorder()
将在您对列
Pop
进行排序后,为您提供列
PA
的一般顺序。这里的问题是,绘图中的
PA
是分组的:绘图中的每个条形图都是数据集中的各条线相互“堆叠”的结果。因此,您需要在数据按PA进行堆叠/分组之后进行排序,而不是之前。更有意义吗?谢谢!!在您的解释之后,我完全能够想象它是如何工作的:-)再次感谢您的帮助!非常感谢您对此的深入解释!今天我确实学到了一些关于r的新知识:-)如果不太麻烦的话,我可以澄清一下“基于集合中的每个观察值排序”是什么意思吗?这样想:如果您的数据集是excel表,
reorder()
将在您对列
Pop
进行排序后,为您提供列
PA
的一般顺序。这里的问题是,绘图中的
PA
是分组的:绘图中的每个条形图都是数据集中的各条线相互“堆叠”的结果。因此,您需要在数据按PA进行堆叠/分组之后进行排序,而不是之前。更有意义吗?谢谢!!在您的解释之后,我完全能够想象它是如何工作的:-)再次感谢您的帮助!