【问题标题】:Make Log Scale Histogram Plot in R在 R 中制作对数刻度直方图
【发布时间】:2015-04-05 00:55:26
【问题描述】:

我正在尝试将我拥有的数据绘制为从 0 到 1 的对数刻度的直方图。我尝试只导入我的数据并像这样绘制:

allelefreq <- read.table("allelefreqs.txt", header = TRUE)
allelefreq <- sapply(allelefreq, as.numeric) #convert to numbers
hist(allelefreq, xlim = range(0:1))

但这只是在 0 处向我显示了一个大条,然后为绘图的其余部分显示了空白空间,并且显然不是对数刻度。

我也尝试过使用 ggplot 来做到这一点,但没有成功。部分问题可能是我有大量数据,其中包含接近 0 的非常小的数字,我认为更小的 bin 将有助于解决这个问题,因为它们会被更多地分开。

我不知道是否可以在直方图上创建非常小的 bin,或者在某个点切割 y 轴以显示所有内容。但是有人知道如何绘制这个吗?

我的数据很简单,看起来像这样(尽管有大约 10,000 个样本):

AlleleFreq
0.001556
0.001985
0.000036
0.000024
0.000036
0.000024
0.001126
0.000012
0.000012
0.000012
0.000012
0.000012
0.000012
0.000012
0.501322

【问题讨论】:

  • “从 0 到 1 的对数刻度直方图”对您意味着什么?
  • 您已从直方图中提取数据?您的样本数据也涵盖了许多数量级。我会先尝试对数据进行子集化。顺便说一句,在这种情况下将 xlim 设置为 (0,1) 并没有什么意义。
  • 我希望 X 轴绘制在最大值为 1 的对数刻度上。不,我没有从直方图中提取数据,但我有想要的数据绘制为直方图。
  • 这一切都清楚了。
  • 酷。是的,我想我的代码错误可能有点误导。

标签: r plot


【解决方案1】:

以防万一有人回头寻找答案。这是我用来解决这个问题的代码:

allelefreq <- read.table("allelefreqs.txt", header = TRUE)
hist(log(allelefreq$AlleleFreq), xlim = c(-15,1), breaks=100)

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 2013-01-08
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2012-09-15
    相关资源
    最近更新 更多