使用scale_x_continuous时如何解决ggplot中的轴文本重叠问题

时间:2019-07-01 19:11:36

标签: r ggplot2

我正在按主题按顺序绘制热门单词及其贡献的图表。为了通过贡献来对每个方面的单词进行排序,我需要创建一个可变顺序,然后用新标签替换。

我的代码如下:

library(ggplot2)    
dat = data.frame(topic = paste('Topic', rep(1:2, each=3)),
               term = c('apple', 'orange', 'peach', 'grape', 'fruit', 'mellon'),
               order = rep(1:3, 2),
               contribution = c(0.01, 0.05, 0.07, 0.02, 0.05, 0.08))

dat %>%
      ggplot(aes(x=order, y=contribution, fill=topic))+
      geom_bar(stat='identity', width=0.5)+
      facet_wrap(~topic, scales = 'free')+
      scale_x_continuous(
            breaks = dat$order,
            labels = dat$term,
            expand = c(0,0)
          ) +
      coord_flip()+
      theme(legend.position = "none")

令人惊讶的是,我发现我的y轴文本与其他文本有些重叠。有人知道为什么吗?我花了几个小时,但不明白为什么会这样。非常感谢!

1 个答案:

答案 0 :(得分:0)

每个订单有多个水果,并且用相同的标签标记两个主题,这是一个问题。 (即“苹果”和“葡萄”),我建议使用library(forcats)按水果绘制并根据顺序对它们重新排序。这是下面的代码:

library(ggplot2)    
library(dplyr)
library(forcats)

dat = data.frame(topic = paste('Topic', rep(1:2, each=3)),
                 term = c('apple', 'orange', 'peach', 'grape', 'fruit', 'mellon'),
                 order = rep(1:3, 2),
                 contribution = c(0.01, 0.05, 0.07, 0.02, 0.05, 0.08))

dat %>%
    ggplot(aes(x = fct_reorder(term, order, max), y = contribution, fill = topic)) + 
    geom_bar(stat = 'identity') + 
    facet_wrap(~ topic, scales = "free") + 
    coord_flip()

reprex package(v0.2.1)于2019-07-01创建