【问题标题】:plot multiple datasets and compare categories with barplots绘制多个数据集并将类别与条形图进行比较
【发布时间】:2021-09-16 10:25:55
【问题描述】:

我有三个具有相同变量的数据集,我想比较三个数据集之间 29 个不同类别的一个变量。下面的示例应作为可重现的示例。我已经尝试过绘制它,但输出不如预期。我希望三个条彼此相邻,并在每个类别的图中都有一个小图。

number_trackers = c(1, 2, 3, 4, 5, 6), 
category = c("Ads", "Analytics", "Ads", "Analytics", "Ads", "Ads"), 
c4 = c("url1.com","ur2.com","url3.com","url4.com","url5.com","url6.com"))

List_short_after=data.frame = c("Tracker1", "Tracker2", "Tracker3", "Tracker4","Tracker5","Tracker6"), 
number_trackers = c(1, 2, 3, 4, 5, 6), 
category = c("Ads", "Analytics", "Ads", "Analytics", "Ads", "Ads"), 
c4 = c("url1.com","ur2.com","url3.com","url4.com","url5.com","url6.com"))

List_after=data.frame = c("Tracker1", "Tracker2", "Tracker3", "Tracker4","Tracker5","Tracker6"), 
number_trackers = c(1, 2, 3, 4, 5, 6), 
category = c("Ads", "Analytics", "Ads", "Analytics", "Ads", "Ads"), 
c4 = c("url1.com","ur2.com","url3.com","url4.com","url5.com","url6.com")) 

ggplot(data = NULL, 
       mapping = aes(y = number_trackers,x=category)) +
  geom_col(data = List_before,fill= "#ca93ef", colour="#ca93ef") +
  geom_col(data = List_short_after,fill= "#5034c4", colour="#5034c4") +
  geom_col(data = List_after,fill= "#795fc6", colour="#795fc6") +
  facet_wrap(facets = vars(category))+
  theme_minimal() +
  theme(text = element_text(color = "#795fc6",size=12,face="bold"),
        axis.text = element_text(color = "#795fc6",size=14,face="bold"))+
  labs(  y = "Number Trackers", x = "Categories")

[![This is how the plot shut look like just with 3 bars instead of 2][1]][1]


  [1]: https://i.stack.imgur.com/nDq36.png

【问题讨论】:

    标签: r dataframe ggplot2 plot


    【解决方案1】:

    以下代码可以帮助您实现目标。请注意,我对您的输入数据有些随意,因为您的问题似乎不完整。

    library(ggplot2)
    
    List_before <- data.frame(
      list_id = "list_before",
      name = c("Tracker1", "Tracker2", "Tracker3", "Tracker4","Tracker5","Tracker6"),
      number_trackers = sample(c(1, 2, 3, 4, 5, 6)), 
      category = c("Ads", "Analytics", "Other 1", "Other 2", "Other 3", "Other 4"), 
      c4 = c("url1.com","ur2.com","url3.com","url4.com","url5.com","url6.com"))
    
    List_short_after <- data.frame(
      list_id = "list_short_after",
      name = c("Tracker1", "Tracker2", "Tracker3", "Tracker4","Tracker5","Tracker6"),
      number_trackers = sample(c(1, 2, 3, 4, 5, 6)), 
      category = c("Ads", "Analytics", "Other 1", "Other 2", "Other 3", "Other 4"), 
      c4 = c("url1.com","ur2.com","url3.com","url4.com","url5.com","url6.com"))
    
    List_after <- data.frame(
      list_id = "list_after",
      name = c("Tracker1", "Tracker2", "Tracker3", "Tracker4","Tracker5","Tracker6"),
      number_trackers = sample(c(1, 2, 3, 4, 5, 6)),
      category = c("Ads", "Analytics", "Other 1", "Other 2", "Other 3", "Other 4"), 
      c4 = c("url1.com","ur2.com","url3.com","url4.com","url5.com","url6.com")) 
    
    df <- rbind(List_before, List_short_after, List_after)
    
    df$list_id <- as.factor(df$list_id)
    df$category <- as.factor(df$category)
    
    ggplot(df, aes(y = number_trackers, x = list_id)) +
      geom_bar(aes(fill = list_id), stat = "identity", position = position_dodge()) +
      theme(axis.text.x = element_blank(),
            axis.ticks.x = element_blank()) +
      facet_grid(~category) +
      labs(y = "Number of Trackers", x = NULL)
    

    【讨论】:

      猜你喜欢
      • 2013-08-13
      • 1970-01-01
      • 2018-06-17
      • 2012-09-12
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      相关资源
      最近更新 更多