我有一个这样的数据框
Elem. Category. SEZa SEZb SEZc
A. ONE. 1. 3. 4
B. TWO. 4. 5. 6
我想用ggplot在三个不同的面(SEZa,SEZb,SEZc)中绘制三个直方图,其中x值是类别值(一。e两个),y值是SEZa,SEZb列中的数字,经济特区。
类似这样的东西:
我该怎么办?谢谢您的建议!
答案 0 :(得分:1)
假设df
是您的data.frame,我首先将宽格式转换为长格式:
new_df <- reshape2::melt(df, id.vars = c("Elem", "Category"))
然后使用geom_col()
而不是geom_histogram()
进行绘图,因为似乎您已经预先计算了y值,并且不需要ggplot为您计算这些值。
ggplot(new_df, aes(x = Category, y = value, fill = Elem)) +
geom_col() +
facet_grid(variable ~ .)
答案 1 :(得分:0)
我认为您正在寻找的是这样的东西:
library(ggplot2)
library(reshape2)
df <- data.frame(Category = c("One", "Two"),
SEZa = c(1, 4),
SEZb = c(3, 5),
SEZc = c(4, 6))
df <- melt(df)
ggplot(df, aes(x = Category, y = value)) +
geom_col(aes(fill = variable)) +
facet_grid(variable ~ .)
我的灵感是: