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的问题