Rstudio 重新排序堆叠的 ggplot geom_bar
Rstudio reorder stacked ggplot geom_bar
所以我在@Axeman 的帮助下制作了一个堆叠条形图。到目前为止一切顺利.. 现在我很想用红色情节交换蓝色情节。我已经使用 ggplot 中的 order 函数尝试了所有方法,但我做对了。这是情节:
在下面,您可以找到用于该图的数据框的摘录(第一行包含 header)。基本上它是一个部门名称,后跟两种类型的储蓄(重复和 MDF),最后一列包含两者的总和(NewRepetitive + Anrechenbare_MDF)
"DivisionName", "NewRepetitive", "Anrechenbare_MDF", "Total_CR"
"Electrification Products" 0 0 0
"Electrification Products" 39.762 0 39.762
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 1641.348852 0 1641.348852
"Electrification Products" 6367.725252 0 6367.725252
"Electrification Products" 24299.24741 0 24299.24741
"Electrification Products" 32910.87486 0 32910.87486
"Electrification Products" 8637.313704 0 8637.313704
"Electrification Products" 9220.489704 0 9220.489704
"Electrification Products" -1038.609948 0 -1038.609948
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 6346.518852 0 6346.518852
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 4675.189452 0 4675.189452
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 8495.893524 0 8495.893524
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 2439.849336 0 2439.849336
"Power Grids" 0 0 0
"Power Grids" -3909.837222 0 -3909.837222
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" -974.473842 0 -974.473842
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" -448.740678 0 -448.740678
"Power Grids" -886.997442 0 -886.997442
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 263.767854 0 263.767854
"Power Grids" -28.4961 0 -28.4961
"Power Grids" 122.00307 0 122.00307
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 3910.778256 0 3910.778256
"Power Grids" 0 0 0
"Power Grids" -1246.87005 0 -1246.87005
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" -61.047924 0 -61.047924
"Power Grids" -61.047924 0 -61.047924
"Power Grids" 0 0 0
"Power Grids" -6.348666 0 -6.348666
"Power Grids" -12.697332 0 -12.697332
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" -240.798672 0 -240.798672
"Power Grids" 0 0 0
"Power Grids" -65.395236 0 -65.395236
"Power Grids" 24.678948 0 24.678948
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 215.669088 0 215.669088
"Power Grids" -61.047924 0 -61.047924
"Power Grids" 14.605908 0 14.605908
"Power Grids" -42.61161 0 -42.61161
"Power Grids" -553.540056 0 -553.540056
"Power Grids" 0 0 0
"Power Grids" 113.507256 0 113.507256
"Power Grids" -21.365448 0 -21.365448
"Power Grids" 0 0 0
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 603.25581 0 603.25581
"Power Grids" -61.047924 0 -61.047924
"Power Grids" 0 0 0
"Power Grids" -224.429982 0 -224.429982
"Power Grids" 0 0 0
"Power Grids" 44.904552 0 44.904552
"Power Grids" -240.798672 0 -240.798672
"Power Grids" 0 0 0
"Power Grids" -361.198008 0 -361.198008
"Power Grids" 0 0 0
"Power Grids" -240.798672 0 -240.798672
"Power Grids" -115.349562 0 -115.349562
"Power Grids" 0 0 0
"Power Grids" 263.767854 0 263.767854
"Power Grids" -1948.93443 0 -1948.93443
"Power Grids" 16.36869 0 16.36869
"Power Grids" 111.280584 0 111.280584
"Power Grids" 924.254436 0 924.254436
"Power Grids" -1122.136656 0 -1122.136656
"Power Grids" 0 0 0
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 0 0 0
"Electrification Products" 5542.133592 -559.362777 4982.770815
"Electrification Products" 3038.638548 -260.690669 2777.947879
"Electrification Products" 2507.378466 -279.681388 2227.697078
"Electrification Products" -2241.940608 -334.661491 -2576.602099
"Electrification Products" -4535.744118 -931.275287 -5467.019405
"Electrification Products" 808.003602 -156.175362 651.82824
"Electrification Products" 958.873884 -209.163422 749.710462
"Electrification Products" -830.588418 -144.621569 -975.209987
"Electrification Products" -999.404616 -184.794228 -1184.198844
"Electrification Products" 342.112248 -225.099694 117.012554
"Electrification Products" -237.193584 -92.629517 -329.823101
"Electrification Products" 238.572 -236.653473 1.918527
"Electrification Products" 145.674714 -71.925657 73.749057
"Electrification Products" 0 -40.637464 -40.637464
"Electrification Products" -437.382 -111.553826 -548.935826
"Electrification Products" 1852.074198 -643.426551 1208.647647
"Electrification Products" 1318.680222 -290.106352 1028.57387
"Electrification Products" 395.89698 -81.009327 314.887653
"Electrification Products" 314.106546 -118.725138 195.381408
"Electrification Products" -711.580752 -277.88855 -989.469302
"Electrification Products" -897.22953 -196.215213 -1093.444743
"Electrification Products" 228.074832 -150.066454 78.008378
"Electrification Products" -657.517686 -188.844696 -846.362382
"Electrification Products" -986.269902 -283.267038 -1269.53694
"Electrification Products" -474.638994 -99.203216 -573.84221
"Electrification Products" -711.951864 -148.804831 -860.756695
"Electrification Products" 286.577988 -66.863233 219.714755
这是用于以正确方式编辑数据框(使用 tidyr 包)的 R-Code,因此我可以制作堆叠条形图,因为 ggplot 需要特定形式的数据。
library(ggplot2)
library(tidyr)
pd <- gather(stack, 'key', 'value', -DivisionName)
pd <- pd[pd$key != 'Total_CR', ]
最后是 ggplot 代码:
ggplot(pd, aes(DivisionName, value, fill = key)) +
geom_bar(stat = "summary", fun.y = "sum") +
scale_fill_discrete(name="Saving-Typen",labels=c("MDF-Savings","Repetitive Savings")) +
ylab("Total Savings") + scale_y_continuous(breaks=c(seq(0,15000000,1000000)), expand = c(0,0))
条形图看起来完全符合我的要求,除了顺序。我需要 MDF 节省超过 Repetitive-Savings。我在这里坐了 5 个小时,无法找到正确的解决方案。我已经用 "order" 选项尝试了所有方法。
有人可以帮助我吗?
尝试手动 select 您想要的颜色:
+ scale_fill_manual(values=c("#999999", "#E69F00"),
name="Legend title",
breaks=c("Electrical", "Power grids"),
labels=c("Electrical", "Power grids"))
发现于 http://www.cookbook-r.com/Graphs/Legends_(ggplot2)/
未测试。
问题不在您的绘图代码中,而在数据框中pd
。您将 pd$key
作为字符向量而不是因子。将其转换为具有正确顺序的因子,ggplot
将为您完成剩下的工作。
之后
pd <- gather(stack, 'key', 'value', -DivisionName)
pd <- pd[pd$key != 'Total_CR', ]
你做到了:
pd$key <- factor(pd$key,
levels = c("NewRepetitive",
"Anrechenbare_MDF"))
不要忘记再次更改标签以匹配正确的值。
ggplot(pd, aes(DivisionName, abs(value), fill = key)) +
geom_bar(stat = "summary", fun.y = "sum") +
scale_fill_discrete(name="Saving-Typen",labels=c("Repetitive Savings","MDF_Savings")) +
ylab("Total Savings") + scale_y_continuous(breaks=c(seq(0,15000000,1000000)), expand = c(0,0))
给予
请注意,由于您的示例数据集不可靠,我不得不使用 abs(value)
。请查看 How to make a great R reproducible example? 以了解将来如何提问。
所以我在@Axeman 的帮助下制作了一个堆叠条形图。到目前为止一切顺利.. 现在我很想用红色情节交换蓝色情节。我已经使用 ggplot 中的 order 函数尝试了所有方法,但我做对了。这是情节:
在下面,您可以找到用于该图的数据框的摘录(第一行包含 header)。基本上它是一个部门名称,后跟两种类型的储蓄(重复和 MDF),最后一列包含两者的总和(NewRepetitive + Anrechenbare_MDF)
"DivisionName", "NewRepetitive", "Anrechenbare_MDF", "Total_CR"
"Electrification Products" 0 0 0
"Electrification Products" 39.762 0 39.762
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 1641.348852 0 1641.348852
"Electrification Products" 6367.725252 0 6367.725252
"Electrification Products" 24299.24741 0 24299.24741
"Electrification Products" 32910.87486 0 32910.87486
"Electrification Products" 8637.313704 0 8637.313704
"Electrification Products" 9220.489704 0 9220.489704
"Electrification Products" -1038.609948 0 -1038.609948
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 6346.518852 0 6346.518852
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 4675.189452 0 4675.189452
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 0 0 0
"Electrification Products" 8495.893524 0 8495.893524
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 2439.849336 0 2439.849336
"Power Grids" 0 0 0
"Power Grids" -3909.837222 0 -3909.837222
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" -974.473842 0 -974.473842
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" -448.740678 0 -448.740678
"Power Grids" -886.997442 0 -886.997442
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 263.767854 0 263.767854
"Power Grids" -28.4961 0 -28.4961
"Power Grids" 122.00307 0 122.00307
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 3910.778256 0 3910.778256
"Power Grids" 0 0 0
"Power Grids" -1246.87005 0 -1246.87005
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" -61.047924 0 -61.047924
"Power Grids" -61.047924 0 -61.047924
"Power Grids" 0 0 0
"Power Grids" -6.348666 0 -6.348666
"Power Grids" -12.697332 0 -12.697332
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" -240.798672 0 -240.798672
"Power Grids" 0 0 0
"Power Grids" -65.395236 0 -65.395236
"Power Grids" 24.678948 0 24.678948
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 0 0 0
"Power Grids" 215.669088 0 215.669088
"Power Grids" -61.047924 0 -61.047924
"Power Grids" 14.605908 0 14.605908
"Power Grids" -42.61161 0 -42.61161
"Power Grids" -553.540056 0 -553.540056
"Power Grids" 0 0 0
"Power Grids" 113.507256 0 113.507256
"Power Grids" -21.365448 0 -21.365448
"Power Grids" 0 0 0
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 603.25581 0 603.25581
"Power Grids" -61.047924 0 -61.047924
"Power Grids" 0 0 0
"Power Grids" -224.429982 0 -224.429982
"Power Grids" 0 0 0
"Power Grids" 44.904552 0 44.904552
"Power Grids" -240.798672 0 -240.798672
"Power Grids" 0 0 0
"Power Grids" -361.198008 0 -361.198008
"Power Grids" 0 0 0
"Power Grids" -240.798672 0 -240.798672
"Power Grids" -115.349562 0 -115.349562
"Power Grids" 0 0 0
"Power Grids" 263.767854 0 263.767854
"Power Grids" -1948.93443 0 -1948.93443
"Power Grids" 16.36869 0 16.36869
"Power Grids" 111.280584 0 111.280584
"Power Grids" 924.254436 0 924.254436
"Power Grids" -1122.136656 0 -1122.136656
"Power Grids" 0 0 0
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 5.977554 0 5.977554
"Power Grids" 0 0 0
"Electrification Products" 5542.133592 -559.362777 4982.770815
"Electrification Products" 3038.638548 -260.690669 2777.947879
"Electrification Products" 2507.378466 -279.681388 2227.697078
"Electrification Products" -2241.940608 -334.661491 -2576.602099
"Electrification Products" -4535.744118 -931.275287 -5467.019405
"Electrification Products" 808.003602 -156.175362 651.82824
"Electrification Products" 958.873884 -209.163422 749.710462
"Electrification Products" -830.588418 -144.621569 -975.209987
"Electrification Products" -999.404616 -184.794228 -1184.198844
"Electrification Products" 342.112248 -225.099694 117.012554
"Electrification Products" -237.193584 -92.629517 -329.823101
"Electrification Products" 238.572 -236.653473 1.918527
"Electrification Products" 145.674714 -71.925657 73.749057
"Electrification Products" 0 -40.637464 -40.637464
"Electrification Products" -437.382 -111.553826 -548.935826
"Electrification Products" 1852.074198 -643.426551 1208.647647
"Electrification Products" 1318.680222 -290.106352 1028.57387
"Electrification Products" 395.89698 -81.009327 314.887653
"Electrification Products" 314.106546 -118.725138 195.381408
"Electrification Products" -711.580752 -277.88855 -989.469302
"Electrification Products" -897.22953 -196.215213 -1093.444743
"Electrification Products" 228.074832 -150.066454 78.008378
"Electrification Products" -657.517686 -188.844696 -846.362382
"Electrification Products" -986.269902 -283.267038 -1269.53694
"Electrification Products" -474.638994 -99.203216 -573.84221
"Electrification Products" -711.951864 -148.804831 -860.756695
"Electrification Products" 286.577988 -66.863233 219.714755
这是用于以正确方式编辑数据框(使用 tidyr 包)的 R-Code,因此我可以制作堆叠条形图,因为 ggplot 需要特定形式的数据。
library(ggplot2)
library(tidyr)
pd <- gather(stack, 'key', 'value', -DivisionName)
pd <- pd[pd$key != 'Total_CR', ]
最后是 ggplot 代码:
ggplot(pd, aes(DivisionName, value, fill = key)) +
geom_bar(stat = "summary", fun.y = "sum") +
scale_fill_discrete(name="Saving-Typen",labels=c("MDF-Savings","Repetitive Savings")) +
ylab("Total Savings") + scale_y_continuous(breaks=c(seq(0,15000000,1000000)), expand = c(0,0))
条形图看起来完全符合我的要求,除了顺序。我需要 MDF 节省超过 Repetitive-Savings。我在这里坐了 5 个小时,无法找到正确的解决方案。我已经用 "order" 选项尝试了所有方法。
有人可以帮助我吗?
尝试手动 select 您想要的颜色:
+ scale_fill_manual(values=c("#999999", "#E69F00"),
name="Legend title",
breaks=c("Electrical", "Power grids"),
labels=c("Electrical", "Power grids"))
发现于 http://www.cookbook-r.com/Graphs/Legends_(ggplot2)/
未测试。
问题不在您的绘图代码中,而在数据框中pd
。您将 pd$key
作为字符向量而不是因子。将其转换为具有正确顺序的因子,ggplot
将为您完成剩下的工作。
pd <- gather(stack, 'key', 'value', -DivisionName)
pd <- pd[pd$key != 'Total_CR', ]
你做到了:
pd$key <- factor(pd$key,
levels = c("NewRepetitive",
"Anrechenbare_MDF"))
不要忘记再次更改标签以匹配正确的值。
ggplot(pd, aes(DivisionName, abs(value), fill = key)) +
geom_bar(stat = "summary", fun.y = "sum") +
scale_fill_discrete(name="Saving-Typen",labels=c("Repetitive Savings","MDF_Savings")) +
ylab("Total Savings") + scale_y_continuous(breaks=c(seq(0,15000000,1000000)), expand = c(0,0))
给予
请注意,由于您的示例数据集不可靠,我不得不使用 abs(value)
。请查看 How to make a great R reproducible example? 以了解将来如何提问。