如何在ggplot2中按字母顺序排列Y轴的标签(附实例)

850 阅读1分钟

你可以使用以下基本语法在ggplot2中按字母顺序排列Y轴标签:

#sort y-axis variable in alphabetical order
df$y_var<- factor(df$y_var, levels=rev(sort(df$y_var)))

#create scatter plot with y-axis in alphabetical order
ggplot(df, aes(x=x_var, y=y_var)) + 
  geom_point()

下面的例子展示了如何在实践中使用这种语法。

例子:在ggplot2中按字母顺序排列Y轴标签

假设我们在R中拥有以下数据框,显示了各篮球队的得分情况:

#create data frame
df <- data.frame(team=c('B', 'D', 'E', 'F', 'A', 'C', 'H', 'G'),
                 points=c(22, 12, 10, 30, 12, 17, 28, 23))

#view data frame
df

  team points
1    B     22
2    D     12
3    E     10
4    F     30
5    A     12
6    C     17
7    H     28
8    G     23

如果我们创建一个散点图,在X轴上标明分数,在Y轴上标明球队,ggplot2会自动按字母顺序显示球队(从底部开始):

library(ggplot2)

#create scatter plot
ggplot(df, aes(x=points, y=team)) + 
  geom_point(size=2)

请注意,Y轴上的标签是按字母顺序从A到Z,从底部开始的。

如果要将y轴上的标签按照相反的字母顺序排列,我们可以使用以下代码。

library(ggplot2)

#sort y-axis variable in alphabetical order
df$team<- factor(df$team, levels=rev(sort(df$team)))

#create scatter plot with y-axis in alphabetical order
ggplot(df, aes(x=points, y=team)) +
  geom_point()

ggplot2 sort y axis labels alphabetically

注意,现在y轴上的标签是按相反的字母顺序排列的,从底部开始。