我已经查看了站点中的所有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个场景的中间,一个区域应该是一个通用名称。
非常感谢。
期望的输出是这样的。
答案 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()
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)