【问题标题】:limit histogram output ggplot2限制直方图输出ggplot2
【发布时间】:2023-04-02 00:40:02
【问题描述】:

我对 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 函数只显示给定计数阈值的输出? IE。仅绘制计数为 5 或更多的城市。

如果可能的话,我想避免重新排序实际的数据框。

【问题讨论】:

    标签: r ggplot2


    【解决方案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 和 @987654325 绘制它@ 在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))
    

    【讨论】:

    • 谢谢,我想从严格的视觉角度来看,没有办法做到这一点。欣赏洞察力
    猜你喜欢
    • 1970-01-01
    • 2018-07-20
    • 2018-11-24
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 2021-12-26
    相关资源
    最近更新 更多