ggplot2 中具有不同类别面孔的水平条形图
Horizontal barplot in ggplot2 with faces having different categories
我有一个包含 ID、类别和值的数据框,同时我很容易地得到一个水平点图,其中产品按不同方面的类别分组,
当我尝试使用条形图时,会显示缺少数据的事件类别。
有什么提示吗?是错误还是我遗漏了一些细节?
谢谢,
马可.
## I have a data frame with ids, categories, and values
d=data.frame(prd=c("orange","apple","pear","bread","crackers"),
cat=c("fruit","fruit","fruit","bakery","bakery"),
qty=c(10,20,15,8,17)
)
# I manage to have an horizontal dot-plot, with products grouped by category in distinct facets
ggplot(d,aes(y=prd,x=qty)) +
geom_point(stat="identity",size=4) +
geom_segment(aes(yend=prd), xend=0, colour="grey50") +
facet_grid(cat ~ .,scale="free",space="free") +
theme_light()
# though when I try with a barplot, bars, with missing data show up
ggplot(d,aes(x=prd,y=qty)) +
geom_bar(stat="identity") +
coord_flip() +
facet_grid(cat ~ .,scale="free",space="free") +
theme_light()
Ggplot2 目前不支持带有非笛卡尔坐标或 coord_flip 的自由标度。
所以你可以不用翻转来绘制它们:
ggplot(d,aes(y=qty,x=prd)) +
facet_wrap(~cat, scale="free") +
geom_bar(stat="identity") +
theme_light()
或者你翻转但使用变通方法,例如。从两个变量中提取一个分类变量(我承认这个解决方案在视觉上不是很吸引人):
d$n <- paste(d$cat, d$prd, sep="|")
ggplot(d,aes(y=qty,x=n)) +
geom_bar(stat="identity") +
coord_flip() +
theme_light()
我有一个包含 ID、类别和值的数据框,同时我很容易地得到一个水平点图,其中产品按不同方面的类别分组, 当我尝试使用条形图时,会显示缺少数据的事件类别。
有什么提示吗?是错误还是我遗漏了一些细节?
谢谢, 马可.
## I have a data frame with ids, categories, and values
d=data.frame(prd=c("orange","apple","pear","bread","crackers"),
cat=c("fruit","fruit","fruit","bakery","bakery"),
qty=c(10,20,15,8,17)
)
# I manage to have an horizontal dot-plot, with products grouped by category in distinct facets
ggplot(d,aes(y=prd,x=qty)) +
geom_point(stat="identity",size=4) +
geom_segment(aes(yend=prd), xend=0, colour="grey50") +
facet_grid(cat ~ .,scale="free",space="free") +
theme_light()
# though when I try with a barplot, bars, with missing data show up
ggplot(d,aes(x=prd,y=qty)) +
geom_bar(stat="identity") +
coord_flip() +
facet_grid(cat ~ .,scale="free",space="free") +
theme_light()
Ggplot2 目前不支持带有非笛卡尔坐标或 coord_flip 的自由标度。
所以你可以不用翻转来绘制它们:
ggplot(d,aes(y=qty,x=prd)) +
facet_wrap(~cat, scale="free") +
geom_bar(stat="identity") +
theme_light()
或者你翻转但使用变通方法,例如。从两个变量中提取一个分类变量(我承认这个解决方案在视觉上不是很吸引人):
d$n <- paste(d$cat, d$prd, sep="|")
ggplot(d,aes(y=qty,x=n)) +
geom_bar(stat="identity") +
coord_flip() +
theme_light()