Stacked/Dodged 以 R 为基数 x 轴的条形图是数值数据

Stacked/Dodged barplot using base R with x-axis is numerical data

我查看了站点中的所有条形图问题,但仍然无法弄清楚如何处理我的数据集。我不知道它是否重复,但非常感谢任何帮助

我的数据集

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、Scenario 位于 x 轴,NPV1 和 NPV2 是高度,并通过不同的模式进行区分。一个区域应该是每4个场景中间的一个通用名称。

非常感谢。

预期的输出是这样的。

除了我的上述评论,我还不太清楚您希望如何可视化您的数据。您到底想在 x 轴上显示什么?

首先,也许您正在寻找这样的东西?

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

x-axis 上的类别格式为 <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")

说明: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)