【问题标题】:How do I create a histogram in R with logarithmic x and y axes? [duplicate]如何在 R 中使用对数 x 和 y 轴创建直方图? [复制]
【发布时间】:2013-02-07 10:54:37
【问题描述】:

所以我有一个整数向量quotes,我希望通过绘制数据点的频率并使 x 和 y 轴均为对数来查看它是否遵守幂律分布。但是,我不太确定如何在 R 中完成此操作。我目前可以使用

创建直方图
hist(quotes, breaks = max(quotes))

但轴都是线性的。

【问题讨论】:

    标签: r histogram lattice


    【解决方案1】:

    可能有更好的方法来做到这一点,但这(基本上)有效:

    data = rnorm(1000,0,1)
    r <- hist(log(data))
    plot(r$breaks[-1],log(r$counts))
    

    编辑:更好的解决方案:

    r <- hist(data)
    plot(r$breaks[-1], r$counts, log='xy', type='h')
    # or alternatively:
    barplot(r$counts, log="y", col="white", names.arg=r$breaks[-1])
    

    条形图版本没有转换后的 x 轴,原因会在您尝试使用转换后的 x 轴时变得清楚。

    【讨论】:

    • 直方图只是一个散点图。您可以使用type='h' 将其制成细条形图。另外,我在第二个版本中省略了 $breaks,但我认为您仍然想要它们。修改了我的回复。
    • 啊哈,谢谢,效果很好!顺便问一下,从中断中删除第一个元素的原因是什么?
    • 中断向量比计数向量长一个元素。只是从向量中去掉一端或另一端是可行的,但有点懒惰:你真正想要的是每对“中断”之间的中值。我将把它作为练习留给读者;)
    • r$breaks[-1] 有什么作用?
    • @PhilGoetz 我已经在 cmets 中回答了这个问题。看看你上面的评论。
    猜你喜欢
    • 2011-12-11
    • 2021-03-03
    • 2015-10-16
    • 2011-05-08
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多