使用带有x轴的R的堆积/躲避条形图是数值数据

时间:2019-03-19 05:04:21

标签: r grouping bar-chart stacked

我已经查看了站点中的所有Barplot问题,但仍然无法弄清楚如何处理我的数据集。我不知道它是否重复,但是任何帮助将不胜感激

我的数据集

Region   Scenario     HC      NPV1       NPV2
C          1           0.1     10          5
C          2           0.2      8          4
C          3           0.3      7          3 
C          4           0.4      6          2
N          1           0.1     10          5
N          2           0.2      8          4
N          3           0.3      7          3 
N          4           0.4      6          2
W          1           0.1     10          5
W          2           0.2      8          4
W          3           0.3      7          3 
W          4           0.4      6          2

我想创建一个条形图,其中HC,方案在x轴上,NPV1和NPV2是高度,并通过不同的模式加以区分。在每个4个场景的中间,一个区域应该是一个通用名称。

非常感谢。

期望的输出是这样的。

enter image description here

1 个答案:

答案 0 :(得分:1)

除了我上面的评论外,我还不清楚你想如何可视化数据。您想在x轴上确切显示什么?

首先,也许您正在追求这样的事情?

library(tidyverse)
df %>%
    gather(key, val, -Region, -Scenario, -HC) %>%
    unite(x, Region, Scenario, HC) %>%
    ggplot(aes(x, val, fill = key)) +
    geom_col()

enter image description here

x轴上的类别的格式为<Region>_<Scenario>_<HC>


更新

要获得与您要显示的图相似的图,可以执行以下操作

library(tidyverse)
df %>%
    gather(key, val, -Region, -Scenario, -HC) %>%
    ggplot(aes(HC, val, fill = key)) +
    geom_col(position = "dodge2") +
    facet_wrap(~Region, nrow = 1, strip.position = "bottom") +
    theme_minimal() +
    theme(strip.placement = "outside")

enter image description here

说明:strip.position = "bottom"确保条形标签在底部,strip.placement = "outside"确保条形标签在轴标签下方(准确地说,在轴标签和轴标题之间)。


样本数据

df <- read.table(text =
"Region Scenario HC NPV1 NPV2
C 1 0.1 10 5
C 2 0.2 8 4
C 3 0.3 7 3
C 4 0.4 6 2
N 1 0.1 10 5
N 2 0.2 8 4
N 3 0.3 7 3
N 4 0.4 6 2
W 1 0.1 10 5
W 2 0.2 8 4
W 3 0.3 7 3
W 4 0.4 6 2
", header = T)