Сложенный / уклоненный барплот с использованием базы R с осью X - это числовые данные - PullRequest
0 голосов
/ 19 марта 2019

Я просмотрел все вопросы о барплотах на сайтах, но все еще не мог понять, что делать с моим набором данных. Я не знаю, является ли это дубликатом, но любая помощь будет так цениться

Мой набор данных

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 Ответ

1 голос
/ 19 марта 2019

В дополнение к моим комментариям, я не совсем понимаю, как вы хотели бы визуализировать ваши данные. Что именно вы хотели бы показать на оси х?

Для начала, может быть, вы ищете что-то подобное?

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)
...