操作axis.text(ggplot2)时遇到问题

时间:2017-06-05 12:16:30

标签: r ggplot2

我在reddit上看到了一个图片,并一直致力于重新创建它。但是我无法将axis.text配置为更清晰的格式,并且想知道可能的解决方案是什么。

到目前为止,我提出的代码是:

    library(ggplot2) 
    library(forcats) 

    airlines <- c('Delta', 'American', 'Spirit', 'JetBlue', 'Alaska', 'United', 'Southwest') 

    market_cap <- c(37100000000,25300000000, 3400000000, 7000000000, 9000000000, 21000000000, 25800000000)

    airline_industry <- data.frame(airlines, market_cap)

    ggplot(airline_industry, aes(fct_reorder(airlines, market_cap), market_cap)) + 
    geom_bar(stat = "identity") + 
    labs(title = "Biggest US Airline Companies by Market Cap", y = 'Market Capitalization (USD)') + 
    coord_flip() + 
    theme(axis.title.y = element_blank()) + 
    scale_x_discrete(labels = c('10000000000' = '10B', '20000000000' = '20B', '30000000000' = '30B'))

所以我遇到的问题是我沿x轴的断裂手动列出10,20和&amp; 300亿数字形式,看起来很乱。我试图弄清楚如何用10B,20B和30B表示休息时间。类似于上面共享的reddit示例的示例。 scale_x_discrete似乎不起作用。获得我想要的结果的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用:

scale_y_continuous(breaks = c(0, 1e10, 2e10, 3e10), labels = c('0B', '10B', '20B', '30B'))

在这里使用y比例可能有点混乱,但这是由于coord_flip;您原来的美学映射是market_cap -> y

然后注意该轴是连续的,而不是离散的。

最后,您还需要为0提供标签,因为这也是一个休息时间。提供休息和标签总是好的。您不应将间断作为字符向量提供,因为它是连续缩放。