更改 ggplot R 中的字母顺序

问题描述

我正在尝试使用我在我正在使用的数据帧中给它的顺序创建一个线图,但是我已经尝试了一切,当我添加诸如 reorder 或 stat = "identity" 之类的东西时,它会显示错误,所以,有人可以帮助我吗?

#Create first data frame w/ women's @R_455_4045@ion
df <- data.frame(Ocupacion=c("Estudiantes","Licenciados/as","Predoctorales","Doctores/as","Profesores/as","Catedraticos/as"),Porcentaje=c(54.3,60.2,51,49,36.1,14.1),Gender=(c("% Mujeres")))


head(df)


#Create second data frame w/ men's @R_455_4045@ion
df2 <- data.frame(Ocupacion=rep(c("Estudiantes",1),Porcentaje=c(45.3,39.2,50.7,61.2,82),Gender=(c("% Hombres")))


head(df2)

#Bind both data frames into one to create the graph
df3 <- rbind(df,df2)



# Change line types by groups (gender)

library(ggplot2)
ggplot(df3,aes(x=Ocupacion,y=Porcentaje,group=Gender)) +
  geom_line(stat = "identity",aes(linetype=Gender))+
  theme_bw() +
  ggtitle("figura 2: Porcentaje de las mujeres y hombres en las universidades
          públicas españolas 2005-2007") +
  theme(plot.title = element_text(hjust = 0.5))+
  geom_point()

解决方法

您需要将“性别”作为一个因素并输入您要用作级别的顺序。

#Create first data frame w/ women's information
df <- data.frame(Ocupacion=c("Estudiantes","Licenciados/as","Predoctorales","Doctores/as","Profesores/as","Catedraticos/as"),Porcentaje=c(54.3,60.2,51,49,36.1,14.1),Gender=(c("% Mujeres")))


head(df)


#Create second data frame w/ men's information
df2 <- data.frame(Ocupacion=rep(c("Estudiantes",1),Porcentaje=c(45.3,39.2,50.7,61.2,82),Gender=(c("% Hombres")))


head(df2)

#Bind both data frames into one to create the graph
df3 <- rbind(df,df2) 

df3$Gender <-factor(df3$Gender,levels = c("% Mujeres","% Hombres"))



# Change line types by groups (gender)

library(ggplot2)
ggplot(df3,aes(x=Ocupacion,y=Porcentaje,group=Gender)) +
  geom_line(stat = "identity",aes(linetype=Gender))+
  theme_bw() +
  ggtitle("Figura 2: Porcentaje de las mujeres y hombres en las universidades
          públicas españolas 2005-2007") +
  theme(plot.title = element_text(hjust = 0.5))+
  geom_point()