【问题标题】:Plotting extreme values on a histogram with ggplot使用 ggplot 在直方图上绘制极值
【发布时间】:2016-06-15 00:27:20
【问题描述】:

数据:

data = data.frame(rnorm(250, 90, sd = 30))

我想创建一个直方图,其中我有一个固定宽度的 bin,但所有大于 arbitrary number 或低于 another arbitrary number 的观察都分组在自己的 bin 中。以上面的数据为例,我希望 binwidth = 10,但是所有大于 100 的值一起放在一个 bin 中,所有低于 20 的值一起放在自己的 bin 中。

我查看了一些答案,但它们对我来说毫无意义,因为它们大多是代码。如果有人可以解释这些步骤,我将不胜感激。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    下面的例子展示了如何在基本图形和ggplot2 中创建所需的直方图。请注意,与具有恒定中断大小的直方图相比,生成的直方图将非常失真。

    基础图形

    R 函数 hist 创建直方图并允许我们使用 breaks 参数设置我们想要的任何 bin:

    # Fake data
    set.seed(1049)
    dat = data.frame(value=rnorm(250, 90, 30))
    
    hist(dat$value, breaks=c(min(dat$value), seq(20,100,10), max(dat$value)))
    

    在上面的代码中,c(min(dat$value), seq(20,100,10), max(dat$value)) 设置了从最低数据值开始到最高数据值结束的中断。在这两者之间,我们使用seq 创建从 20 到 100 以 10 为增量的中断序列。这是情节的样子:

    ggplot2

    library(ggplot2)
    
    ggplot(dat, aes(value)) +
      geom_histogram(breaks=c(min(dat$value), seq(20,100,10), max(dat$value)),
                     aes(y=..density..), color="grey30", fill=hcl(240,100,65)) +
      theme_light()
    

    【讨论】:

    • 感谢 ggplot 示例和详细说明。如何使 100-160 条的视觉宽度与其他条具有相同的视觉宽度?
    猜你喜欢
    • 2016-05-20
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多