我有几个类别(A,B,C)和子类别(A01,B01,B02,...)的数据。我希望在一个独特的图表中有按类别划分的子类别(共享相同的比例)。
以下是我的工作流程示例:
library(ggplot2)
library(plyr)
# Create data
subcategory <- c("A01", "A02", "A03", "B01", "B02", "C01", "C02", "D01")
qty <- c(4, 5, 3, 8, 4, 2, 1, 6)
df <- data.frame(subcategory=subcategory, qty=qty)
df$category <- factor(str_extract(df$subcategory, "[A-Z]"))
# Data aggregation
df.ply <- ddply(df, .(subcategory, category), summarize, qty=sum(qty))
# Plotting
plot <- ggplot(df.ply, aes(x=subcategory, y=qty, fill=category))
plot + geom_bar(stat="identity") + facet_grid(category~.)
所以这个聚合表:
subcategory category qty
1 A01 A 4
2 A02 A 5
3 A03 A 3
4 B01 B 8
5 B02 B 4
6 C01 C 2
7 C02 C 1
8 D01 D 6
给我这张照片:
...我想在每个方面只有相应的子类别(删除空的子类别)。这可能与ggplot2一起使用吗?
我应该使用视口和子图而不是刻面吗?关于如何在我的用户名中修改Hadley Wickam的ggplot2书中的指令p146,我很遗憾...
答案 0 :(得分:1)
只需更改代码的最后一行:
plot + geom_bar(stat="identity") + facet_wrap(~category, scales="free")
您仍然可以使用facet_grid
:
plot + geom_bar(stat="identity") + facet_grid(~category, scales="free")
但是使用facet_wrap
会让你选择方面的nrow和ncol。