R 如何根据管道中的汇总值对几何图形列进行排序

R 如何根据管道中的汇总值对几何图形列进行排序,r,ggplot2,R,Ggplot2,我试图理解其他结果,但我无法理解。 这是我的数据集: > HIST # A tibble: 1,071 x 16 Ano Leilao Fonte UF Vend Projeto <dbl> <chr> <chr> <chr> <chr> <chr>

我试图理解其他结果,但我无法理解。 这是我的数据集:

 > HIST
# A tibble: 1,071 x 16
     Ano        Leilao Fonte    UF     Vend                         Projeto
   <dbl>         <chr> <chr> <chr>    <chr>                           <chr>
 1  2008 2008 Leilao 1   Bio    SP  Abengoa UTE São Luiz (Abengoa São Luiz)
 2  2013    2013 A-5 1   Bio    MS AMANDINA                        Amandina
 3  2017      2017 A-6   Bio    MG    BEVAP         BIOENERGETICA AROEIRA 2
 4  2015    2015 A-5 1   Bio    BA     Bolt                         BOLTBAH
 5  2013    2013 A-5 1   Bio    BA     Bolt                    CAMPO GRANDE
 6  2013    2013 A-5 1   Bio    PI     Bolt                 CANTO DO BURITI
 7  2010      2010 LER   Bio    TO    Bunge                    PEDRO AFONSO
 8  2015      2015 LFA   Bio    SP  Clealco                 CLEALCO QUEIROZ
 9  2015      2015 A-3   Bio    SP  Clealco                 CLEALCO QUEIROZ
10  2008 2008 Leilao 1   Bio    MG     CMAA              UTE Vale do Tijuco
# ... with 1,061 more rows, and 10 more variables: CODPPA <dttm>, CAPEX <dbl>,
#   MW <dbl>, GF <dbl>, FC <dbl>, PPA <dbl>, RMW <dbl>, WACC <dbl>, TIR <dbl>,
#   VPL <dbl>
但问题是,我得到了下面的图表,不是按MW的总和排序的。我希望此图表的列按列的高度排序:


谢谢你,保罗,你可以先计算每个酒吧的高度,并指定适当的顺序作为因素。否则,ggplot将在x轴上按分类顺序绘制UF的值

# create summary data frame from HIST
df <- HIST %>%
  group_by(Fonte, UF) %>%
  summarise(SUMMW = sum(MW))

# calculate total bar height for each UF value, & sort accordingly.
df2 <- df %>%
  group_by(UF) %>%
  summarise(bar.heights = sum(SUMMW)) %>%
  ungroup() %>%
  arrange(desc(bar.heights))

# convert UF in the summary data frame to factor, with levels in the sorted order
df$UF <- factor(df$UF, levels = df2$UF)
rm(df2) # you can remove df2 after this; it's not needed anymore

# plot
ggplot(df, 
       aes(x = UF, y = SUMMW, fill = Fonte))+
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  geom_col()
#从HIST创建摘要数据框
df%
分组人(方特,佛罗里达州)%>%
总结(总结W=总结(MW))
#计算每个UF值的总条高,并相应排序。
df2%
分组依据(UF)%>%
汇总(条形高度=总和(总和))%>%
解组()%>%
排列(描述(条形高度))
#将摘要数据框中的UF转换为因子,级别按排序顺序

df$UF您可以先计算每个杆的高度,并将UF的适当顺序指定为一个系数。否则,ggplot将在x轴上按分类顺序绘制UF的值

# create summary data frame from HIST
df <- HIST %>%
  group_by(Fonte, UF) %>%
  summarise(SUMMW = sum(MW))

# calculate total bar height for each UF value, & sort accordingly.
df2 <- df %>%
  group_by(UF) %>%
  summarise(bar.heights = sum(SUMMW)) %>%
  ungroup() %>%
  arrange(desc(bar.heights))

# convert UF in the summary data frame to factor, with levels in the sorted order
df$UF <- factor(df$UF, levels = df2$UF)
rm(df2) # you can remove df2 after this; it's not needed anymore

# plot
ggplot(df, 
       aes(x = UF, y = SUMMW, fill = Fonte))+
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  geom_col()
#从HIST创建摘要数据框
df%
分组人(方特,佛罗里达州)%>%
总结(总结W=总结(MW))
#计算每个UF值的总条高,并相应排序。
df2%
分组依据(UF)%>%
汇总(条形高度=总和(总和))%>%
解组()%>%
排列(描述(条形高度))
#将摘要数据框中的UF转换为因子,级别按排序顺序

df$UF我认为最简单的方法是在aestetics函数
aes
中使用
reorder(UF,desc(SUMMW))
对变量进行重新排序:


我认为最简单的方法是在aestetics函数
aes
中使用
reorder(UF,desc(SUMMW))
对变量
SUMMW
进行重新排序:


非常感谢。但是,为什么要解组df2?我可以把df2分组吗?解组的效果是什么?谢谢你!但是,为什么要解组df2?我可以把df2分组吗?解组的效果是什么?谢谢
HIST %>%
  group_by(Fonte, UF)%>%
  summarise(SUMMW = sum(MW))%>%
  arrange(desc(SUMMW))%>%

  ggplot(aes(x = reorder(UF, desc(SUMMW)), y = SUMMW, fill = Fonte))+

  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  geom_col()