R 如何在ggplot中按因子对绘图重新排序?

R 如何在ggplot中按因子对绘图重新排序?,r,ggplot2,R,Ggplot2,我正试图通过变量pct\u vacc\code>绘图中使用的以下因素之一对geom\u col绘图进行重新排序pct\u vacc\u GenderType df library(tidyverse) library(lubridate) library(scales) library(gganimate) file_url1 <- "https://raw.githubusercontent.com/johnsnow09/covid19-df_stack-code/main/

我正试图通过变量
pct\u vacc\code>绘图中使用的以下因素之一对
geom\u col
绘图进行重新排序
pct\u vacc\u GenderType

df

library(tidyverse)
library(lubridate)
library(scales)
library(gganimate)

file_url1 <- "https://raw.githubusercontent.com/johnsnow09/covid19-df_stack-code/main/cowin_vaccine_data_statewise.csv"

df_vaccination <- read.csv(url(file_url1))

df_vaccination <- df_vaccination %>%
  mutate(Updated.On = as.Date(Updated.On))

我希望通过红色即<代码>pct_女性_vacc
因子对上述绘图进行重新排序


无法在中使用
reorder\u,因为我没有在此处使用
facet\u wrap
。还尝试了
fct\u重新排序
,但可能是我做得不对,甚至在这种情况下也不起作用。

使用
forcats::fct\u重新排序
,您想要做的很简单。唯一需要注意的是,您需要在
pivot\u之前设置系数。给你:

df_疫苗接种%>%
过滤器(状态!=“印度”,
Updated.On==max(Updated.On)-1)%>%#最新的日期只包含NAs,因此我使用第二个最早的日期
#排列(说明(更新日期))%>%
突变(pct_雌性_vacc=雌性。个体。已接种。/总数。个体。已接种,
pct_male_vacc=男性。个体。接种的。/总数。个体。接种的,
状态=状态系数(状态)
) %>%
变异(State=forcats::fct_reorder(State,pct_female_vacc))%>%#由于下一步的支点更长,因此必须在此处对因子进行排序
枢轴长度(cols=c(pct女性:pct男性),
name_to=“pct\u vacc\u GenderType”,
数值_to=“pct\u vacc”)%>%
突变(pct\U vacc\U GenderType=as.factor(pct\U vacc\U GenderType))%>%
筛选器(!is.na(pct_vacc))%>%#使用此筛选器而不是na.omit()来删除NAs
ggplot(aes(x=pct\U vacc,y=State,
填充=pct\U vacc\U性别类型)+
geom_col()+
theme(legend.position=“bottom”)#我将图例移到了底部,以便在stackoverflow中看起来更好


由(v2.0.0)于2021年5月16日创建的使用
forcats::fct_reorder
可以简单地执行操作。唯一需要注意的是,您需要在
pivot\u之前设置系数。给你:

df_疫苗接种%>%
过滤器(状态!=“印度”,
Updated.On==max(Updated.On)-1)%>%#最新的日期只包含NAs,因此我使用第二个最早的日期
#排列(说明(更新日期))%>%
突变(pct_雌性_vacc=雌性。个体。已接种。/总数。个体。已接种,
pct_male_vacc=男性。个体。接种的。/总数。个体。接种的,
状态=状态系数(状态)
) %>%
变异(State=forcats::fct_reorder(State,pct_female_vacc))%>%#由于下一步的支点更长,因此必须在此处对因子进行排序
枢轴长度(cols=c(pct女性:pct男性),
name_to=“pct\u vacc\u GenderType”,
数值_to=“pct\u vacc”)%>%
突变(pct\U vacc\U GenderType=as.factor(pct\U vacc\U GenderType))%>%
筛选器(!is.na(pct_vacc))%>%#使用此筛选器而不是na.omit()来删除NAs
ggplot(aes(x=pct\U vacc,y=State,
填充=pct\U vacc\U性别类型)+
geom_col()+
theme(legend.position=“bottom”)#我将图例移到了底部,以便在stackoverflow中看起来更好


由(v2.0.0)于2021年5月16日创建,通过pct女性vacc排列数据,并将状态更改为基于外观的系数

library(tidyverse)

df_vaccination %>% 
  filter(State != "India",
         Updated.On == max(Updated.On)) %>% 
  mutate(pct_female_vacc = `Female.Individuals.Vaccinated.`/Total.Individuals.Vaccinated,
         pct_male_vacc = Male.Individuals.Vaccinated./Total.Individuals.Vaccinated) %>%
  arrange(pct_female_vacc) %>%
  mutate(State = factor(State, unique(State))) %>%
  pivot_longer(cols = c(pct_female_vacc:pct_male_vacc),
               names_to = "pct_vacc_GenderType",
               values_to = "pct_vacc") %>% 
  na.omit() %>%
  ggplot(aes(x = pct_vacc, y =  State , 
             fill = pct_vacc_GenderType)) +
  geom_col() 

通过
pct\u female\u vacc
排列
数据,并将
状态
更改为基于外观的系数

library(tidyverse)

df_vaccination %>% 
  filter(State != "India",
         Updated.On == max(Updated.On)) %>% 
  mutate(pct_female_vacc = `Female.Individuals.Vaccinated.`/Total.Individuals.Vaccinated,
         pct_male_vacc = Male.Individuals.Vaccinated./Total.Individuals.Vaccinated) %>%
  arrange(pct_female_vacc) %>%
  mutate(State = factor(State, unique(State))) %>%
  pivot_longer(cols = c(pct_female_vacc:pct_male_vacc),
               names_to = "pct_vacc_GenderType",
               values_to = "pct_vacc") %>% 
  na.omit() %>%
  ggplot(aes(x = pct_vacc, y =  State , 
             fill = pct_vacc_GenderType)) +
  geom_col() 

您的绘图不可复制。请检查您的代码好吗?:)@罗纳克沙。。。抱歉,这是github文件的问题。我用正确的文件更改了url。@bird。。。抱歉,这是github文件的问题。我已使用正确的文件更改了url。您的绘图不可复制。请检查您的代码好吗?:)@罗纳克沙。。。抱歉,这是github文件的问题。我用正确的文件更改了url。@bird。。。抱歉,这是github文件的问题。我已经用正确的文件更改了url。谢谢Ronak。我不知道即使在旋转之后,它也会保留来自arrange的订单!!谢谢Ronak。我不知道即使在旋转之后,它也会保留来自arrange的订单!!谢谢@JBGruber,您的答案非常有效,但我接受了其他人的答案,因为他甚至在github文件链接断开之前就在尝试。但我对你们在max date之前的日期中加入和使用的细节印象深刻。再次感谢您的帮助和努力。真的很感激:)是的,不用担心!我使用了原始链接并修复了
max(Updated.On)-1的问题谢谢@JBGruber,您的答案非常有效,但我接受了其他人的答案,因为他甚至在github文件链接断开之前就在尝试。但我对你们在max date之前的日期中加入和使用的细节印象深刻。再次感谢您的帮助和努力。真的很感激:)是的,不用担心!我使用了原始链接并修复了
max(Updated.On)-1的问题