【问题标题】:geom_histogram to plot counts/accumulation of each x value and highergeom_histogram 绘制每个 x 值和更高值的计数/累积
【发布时间】:2018-05-15 22:02:05
【问题描述】:

我正在尝试在 R 中创建一个直方图/条形图,以显示我在数据集及更高中拥有的每个 x 值的计数。我在这样做时遇到了麻烦,我不知道我是使用 geom_histogram 还是 geom_bar(我想使用 ggplot2)。进一步描述我的问题:

在 X 轴上,我有“Percent_Origins”,这是我的数据框中的一列。在我的 Y 轴上 - 对于我出现的每个 Percent_Origin 值,我希望条形的高度表示具有该百分比值及更高的行数。现在,如果我要使用直方图,我有:

   plot <- ggplot(dataframe, aes(x=dataframe$Percent_Origins)) + 
  geom_histogram(aes(fill=Percent_Origins), binwidth= .05, colour="white")

我应该如何更改填充或通用代码以执行我想要的操作?也就是说,绘制每个值和更高的计数的累积?谢谢!

【问题讨论】:

  • 您能否添加代码来复制dataframe 数据集,以便我们了解您的确切要求?
  • 您是否在使用经验 CDF 图?
  • 我正在研究直方图的 stat ecdf 参数。这就是我所拥有的: plot
  • 是的,我想要一个经验 CDF 图,但相反 - 所以它会在每个 x 值及 处累积所有内容。

标签: r dataframe ggplot2 histogram geom-bar


【解决方案1】:

我认为你最好的办法是创建累积分布函数首先然后将它传递给ggplot。有几种方法可以做到这一点,但一种简单的方法(使用dplyr)是对数据进行排序(按降序排列),然后为每个数据分配一个计数。修剪数据以仅包含最大计数,然后绘制它。

为了演示,我使用了内置的iris 数据。

iris %>%
  arrange(desc(Sepal.Length)) %>%
  mutate(counts = 1:n()) %>%
  group_by(Sepal.Length) %>%
  slice(n()) %>%
  ggplot(aes(x = Sepal.Length, y = counts)) +
  geom_step(direction = "vh")

给予:

如果您真的想要条而不是线条,请改用geom_col。但是,请注意,您要么需要填充空白(以确保条形在整个范围内均匀分布),要么需要处理图中的中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-19
    • 2014-01-03
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2019-06-06
    相关资源
    最近更新 更多