В дополнение к моим комментариям, я не совсем понимаю, как вы хотели бы визуализировать ваши данные. Что именно вы хотели бы показать на оси х?
Для начала, может быть, вы ищете что-то подобное?
library(tidyverse)
df %>%
gather(key, val, -Region, -Scenario, -HC) %>%
unite(x, Region, Scenario, HC) %>%
ggplot(aes(x, val, fill = key)) +
geom_col()
Здесь категории на оси 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")
Объяснение: 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)