限制直方图输出ggplot2

时间:2014-04-18 16:45:02

标签: r ggplot2

我对R和ggplot2包很新。我正在尝试创建一个简单的直方图,其中包括学生来自不同城市的课后计划。到目前为止,我的代码就是这个

cities.hist=ggplot(data,
  aes(x=reorder(City, City, function(x)-length(x))))+
  geom_histogram()+
  theme(axis.text.x = element_text(angle = 60, hjust = 1))

这会产生一个大的直方图,许多城市只计算一次。是否有ggplot2函数只显示给定阈值计数的输出? I.E.仅绘制计数为5或更多的城市。

我希望尽可能避免重新排序实际的数据帧。

1 个答案:

答案 0 :(得分:1)

没有内置的ggplot方法来做到这一点。你应该做的只是给ggplot你想要绘制的数据子集。使用基本功能的一种方法是这样的:

cities.hist=ggplot(data = subset(as.data.frame(table(data$City)), Freq > 1, select = City),
  aes(x=reorder(City, City, function(x)-length(x))))+
  geom_histogram()+
  theme(axis.text.x = element_text(angle = 60, hjust = 1))

另一种选择是计算ggplot之外的频率表(您可以使用上面的as.data.frame(table(...)或更像语法友好的内容,如dplyr),然后在y = freq内绘制stat = "identity"您的美学映射和geom_histogram调用中的require(dplyr) data %.% group_by(City) %.% summarize(freq = n()) %.% ggplot(aes(x = reorder(City, City, function(x)-length(x)), y = freq)) + geom_bar(stat = "identity") + theme(axis.text.x = element_text(angle = 60, hjust = 1)) 。像这样:

{{1}}