ggplot2:R百分比图表中的堆栈顺序

时间:2017-02-21 22:24:03

标签: r ggplot2

我编辑了下面的数据,以便它是虚拟数据。 Source的列具有专有名称。

我的数据看起来像这样,我想按排名和非来源重新排列我的叠加图表,但希望我的图例反映来源。

TotalBySource <- read.table(header=TRUE, stringsAsFactors=FALSE,
text="FY        Source  Rank TotalExpense   TotalforFY  Percent
2006    Option1 1    46753094.2     121493809.7 0.384818735
2006    Option7 7    7113652.3      121493809.7 0.058551562
2006    Option6 6    34461918.9     121493809.7 0.283651644
2006    Option8 8    10586263.1     121493809.7 0.087134177
2006    Option5 5    1777846.8      121493809.7 0.014633229
2006    Option4 4    17886868.4     121493809.7 0.147224525
2006    Option3 3    2118019.3      121493809.7 0.017433146
2006    Option2 2    796146.7       121493809.7 0.006552982
2007    Option7 7    6833612        118232170.7 0.057798245
2007    Option5 5    1676225.2      118232170.7 0.014177404
2007    Option6 6    35245142.1     118232170.7 0.298101117
2007    Option3 3    2283154.9      118232170.7 0.019310775
2007    Option4 4    17948447.3     118232170.7 0.151806798
2007    Option8 8    10279117       118232170.7 0.086940102
2007    Option1 1    43397313.8     118232170.7 0.367051654
2007    Option2 2    569158.4       118232170.7 0.004813905
2008    Option1 1    43962329.7     115013461.7 0.382236384
2008    Option7 7    6745206.4      115013461.7 0.058647104
2008    Option6 6    34288244.4     115013461.7 0.298123749
2008    Option8 8    10304301.5     115013461.7 0.089592134
2008    Option5 5    1551682.9      115013461.7 0.013491316
2008    Option4 4    15180864       115013461.7 0.131992062
2008    Option3 3    2398345.7      115013461.7 0.020852739
2008    Option2 2    582487.1       115013461.7 0.005064512")

我构造了这段代码:

 library(ggplot2)
 p4 <- ggplot() + 
   geom_bar(aes(y = Percent, x = FY, fill = Source), data = TotalBySource, stat="identity")

并得到了一个可爱的堆积条形图

但是真的希望堆栈和图例按等级和图例排序以读取相应的来源。我可以得到一些帮助吗?

1 个答案:

答案 0 :(得分:1)

我得到一个带有&#34; Option1&#34;的堆积条形图到&#34; Option8&#34;从上到下,我即按字母顺序排序。 你的意思是反过来排序,我。即&#34;选项8&#34;在顶部,然后下降?

如果是这样,您可以使用Hadley Wickhams forcats包来反转因子顺序,如下所示:

library(forcats)
TotalBySource$Source <- fct_rev(TotalBySource$Source)

p4 <- ggplot() + 
      geom_bar(aes(y = Percent, x = FY, fill = Source), 
               data = TotalBySource, stat = "identity")
p4

enter image description here

相关问题