如何解决R ggplot 中的 reorder() 函数出错,找不到对象
这是我得到的确切错误 - 重新排序错误(国家,Average_literacy_rate,mean): 未找到对象“国家” 另外: 警告信息: 尝试用group_by()计算,但计算失败。 回退到未分组的过滤器操作...
代码在下面 & 第一个块,即直到汇总函数工作正常,所以问题出在 aes(reorder()) 行 & 是 R 的新手,我无法弄清楚。请帮忙。
literacy_data <- read_csv("Literacy rates - Sheet1.csv")
library(stringr)
d <- str_replace(literacy_data$`Literacy rate`,pattern="%","")
literacy_data$`Literacy rate` <- as.numeric(d)/100
literacy_data %>%
filter(Gender=="female") %>%
group_by(Country) %>%
filter(max(Year)==2018 & n_distinct(Year)>=5,mean(literacy_data$'Literacy rate'[Year==2018],na.rm = T)>mean(literacy_data$'Literacy rate'[Year!=2018],na.rm = T)) %>%
group_by(Country,Year) %>%
summarise(Average_literacy_rate = mean(literacy_data$'Literacy rate',na.rm = T),.groups = 'drop')
ggplot(literacy_data,aes(reorder(Country,Average_literacy_rate,mean),color=as.factor(Year)))+
geom_point(size=9,alpha=0.4)+
coord_flip()+
gghighlight(Year==2018)+
scale_y_percent()+
scale_color_manual(values = c("2018"="firebrick"))+
theme_minimal()+
labs(x=NULL,y=NULL,title = "Countries that had peak average literacy rate in <span style='color:firebrick'>**2018**</span>",color=NULL)+
theme_ipsum_ps()+
theme(plot.title = element_markdown(size=20,margin = margin(b = 10)))
数据集位于 - dataset
解决方法
你的语法似乎错了...
`literacy_data <- literacy_data %>%
filter(Gender=="female") %>%`
去掉最后一行总结中的 %>%
....
改变:
`ggplot(aes(reorder(Country,Average_literacy_rate,mean),color=as.factor(Year)))+
geom_point(size=9,alpha=0.4)` ...
由
`ggplot(literacy_data,aes(reorder(Country,color=as.factor(Year)))+
geom_point(size=9,alpha=0.4)`
在 aes 之前你必须告知数据框名称
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。