代码之家  ›  专栏  ›  技术社区  ›  astrsk

R: 在ggplot2条形图中为每个方面绘制唯一的因子集

  •  0
  • astrsk  · 技术社区  · 7 年前

    ggplot2

        data<-read.csv(text="continent,stuff,average,giant
    North America,apples,20,30
    North America,bananas,25,32
    Europe,bananas,15,25
    Europe,potatoes,10,20
    Europe,mosquitoes,13,17
    Asia,snakes,26,35
    Asia,snails,7,15
    Asia,pandas,10,20")
    

    geom_col() 和镶嵌技术:

    library(dplyr)
    library(tidyr)
    library(ggplot2)
    data.tidied<-data %>%
      gather(key=size, value=val,-continent,-stuff)
    ggplot(data.tidied,aes(x=stuff,y=val,fill=size))+
    geom_col(position="dodge")+
    facet_grid(~continent)+coord_flip()
    

    barchart with shared factors across facets

    所有这些因素在各大洲都是一致的,尽管其中大多数是不需要的,所以有很多差距。但我们在北美和欧洲不需要任何蜗牛,这是很自然的,只有在亚洲等领域。(为了让事情更清楚,你可能会认为苹果/香蕉/土豆是一个大陆特有的地理位置:我们在欧洲没有任何加利福尼亚州)。那么:如何使用 ggplot (或任何替代方案)?即:如何为每个方面绘制一组独特的因子?

    1 回复  |  直到 7 年前
        1
  •  2
  •   neilfws    7 年前

    您可以使用 facet_wrap facet_grid 并指定 scales = "free_y" (必须 free_y

    data %>% 
      gather(size, val, -continent, -stuff) %>% 
      ggplot(aes(stuff, val)) + 
        geom_col(aes(fill = size), position = "dodge") + 
        facet_wrap(~continent, scales = "free_y") + 
        coord_flip()
    

    enter image description here