我对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或更多的城市。
我希望尽可能避免重新排序实际的数据帧。
答案 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}}