如何在ggplot2中通过geom_bar和geom_line使用辅助轴,并为每个轴使用不同的数据子集

时间:2019-06-08 20:53:34

标签: r ggplot2 geom-bar yaxis

我正在尝试使用ggplot2(和tidyverse)从r用Excel制作这张图energy taxes graph from excel

我使用MR open和rstudio。我使用了来自eurostat的数据。我通过chekpoint 2019-03-30通过以下方式获得它们:

library(tidyverse)
library(eurostat) 

#this part gets the values for the revenue in euros for all countries
taxes_total <-  get_eurostat(id = "t2020_rt300", time_format = "num")
taxes_total <- label_eurostat(taxes_total)

#this part gets the values for the revenue in euros for only Greece
taxes_total_grc <- taxes_total %>% 
  filter(time >= 2008, geo == "Greece") %>% select(geo, time, nace_r2, values)
View(taxes_total_grc)

#this part gets the values for the percentages of taxes by sector for all countries
taxes_per_sect <-  get_eurostat(id = "t2020_rt310", time_format = "num")
taxes_per_sect <- label_eurostat(taxes_per_sect)

#this part gets the values for the percentages of taxes by sector for only Greece
taxes_per_sect_grc <- taxes_per_sect %>% 
  filter(time >= 2008, geo == "Greece") %>% select(geo, time, nace_r2, values)
View(taxes_per_sect_grc)

#here i am making a dataframe to have it all together but i haven't used it in the graph because i cannot figure out how to seperate the revenue values from the percentage in the graph.

energy_taxes <- rbind(taxes_per_sect_grc, taxes_total_grc)

我已经能够以相同的形式制作条形图,并编写如下代码:

taxes_per_sect_grc %>% 
  filter(time %in% seq(2008,2016,2)) %>%

  ggplot(aes(x = reorder(nace_r2, -values), y = values, fill = nace_r2))+ 
  geom_bar(stat = "identity") +
  geom_text(aes(label = values), vjust = -0.2, size = 3.5)+
  facet_wrap(~ time, nrow = 1, strip.position = "bottom") +

  theme(legend.position = c(0.75, 0.95), 
        legend.title = element_blank(),
        legend.text = element_text(size = 8),
        legend.key.size = unit(4, "mm"),
        legend.direction = "vertical",

        panel.grid = element_blank(),
        panel.background = element_blank(),

        axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank(),

        strip.background = element_blank())+

  guides(fill = guide_legend(ncol = 2))+ 
  labs(title = "Distribution of energy taxes in Greece", 
             y = "% of energy taxes", caption = "Eurostat")

我已经阅读了有关问题以及为什么将辅助轴与图形一起使用的原因。但是,在excel图形中,i a的辅助轴是从1到1的转换(准确地说是1到60),因此最终图形不会使信息失真。

所以我的问题是:

  1. 如何制作Excel图形?
    1. 我如何使用具有所有信息(energy_taxes)的df,并使用geom_bar和 geom_line部分。
    2. 如果我无法使用完整的数据帧(energy_taxes),那么我如何使用taxs_total_grc这两个单独的部分来获取收入 值和taxs_per_sector_grc表示要产生的百分比 图。
    3. facet_wrap是否正确?我问是因为它基本上会生成单独的图,所以geom_line会如何 它们之间的连接类似于excel?

谢谢大家的时间

0 个答案:

没有答案