ggplot2中的水平条形图,其中的面具有不同的类别

时间:2015-01-29 09:55:09

标签: r ggplot2 bar-chart facet

我有一个带有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()

1 个答案:

答案 0 :(得分:1)

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