将数据汇总为R中并排条形图的百分比

将数据汇总为R中并排条形图的百分比,r,ggplot2,dplyr,R,Ggplot2,Dplyr,下面是我遇到问题的代码及其输出。数据集链接在文章的底部 我想做的是将状态码与每个MSN组合在一起(与输出中现在显示的相反) 到目前为止,我相信这一切都与我如何创建条形图的百分比有关 任何援助都将是巨大的。谢谢大家! 以下是我使用的数据这是一个版本,使用data.table进行初始筛选,并更改plot函数,希望得到您想要的结果: 库(readxl) 库(数据表) 图书馆(GG2) 下载文件(“http://www.mathmodels.org/Problems/2018/MCM-C/Problem

下面是我遇到问题的代码及其输出。数据集链接在文章的底部

  • 我想做的是将状态码与每个MSN组合在一起(与输出中现在显示的相反)
  • 到目前为止,我相信这一切都与我如何创建条形图的百分比有关

    任何援助都将是巨大的。谢谢大家!


    以下是我使用的数据

    这是一个版本,使用
    data.table
    进行初始筛选,并更改plot函数,希望得到您想要的结果:

    库(readxl)
    库(数据表)
    图书馆(GG2)
    下载文件(“http://www.mathmodels.org/Problems/2018/MCM-C/ProblemCData.xlsx“,“~/ex/ProblemCData.xlsx”)
    #默认情况下,因子级别将按字母顺序排列,因此我们不需要指定
    
    EnergyData提出了一个人们可以帮助解决的R问题。这包括一个数据样本(不是它的图片),以及一个清晰的解释,说明什么东西不起作用,只是需要代码来帮助调试issueThank you@camille,我刚刚编辑了这篇文章。希望我的问题现在能更清楚一点!
      plotdata <- EnergyData %>% 
      filter(MSN %in% c("BMTCB", "GETCB", "HYTCB", "SOTCB", "WYTCB")) %>%
      filter(Year %in% c("2009")) %>%
      select(StateCode, MSN, Data) %>%
      group_by(StateCode) %>%
      mutate(pct = Data/sum(Data),
             lbl = scales::percent(pct))
      plotdata 
    
      ggplot(EnergyData, 
           aes(x = factor(StateCode,
                          levels = c("AZ", "CA", "NM", "TX")),
               y = pct,
               fill = factor(drv, 
                             levels = c("BMTCB", "GETCB", "HYTCB", "SOTCB", "WYTCB"),
                             labels = c("BMTCB", "GETCB", "HYTCB", "SOTCB", "WYTCB")))) + 
      geom_bar(stat = "identity",
               position = "fill") +
      scale_y_continuous(breaks = seq(0, 1, .2), 
                         label = pct) +
      geom_text(aes(label = lbl), 
                size = 3, 
                position = position_stack(vjust = 0.5)) +
      scale_fill_brewer(palette = "Set2") +
      labs(y = "Percent", 
           fill = "MSN",
           x = "State",
           title = "Renewable Resources by State") +
      theme_minimal()