【问题标题】:Ploting histograms using stats library使用统计库绘制直方图
【发布时间】:2021-01-23 20:53:47
【问题描述】:

我对编程很陌生,所以如果这是一个已经回答了很多次的基本问题,我很抱歉。我正在尝试绘制一个直方图,在 X 轴上有月份,在 Y 轴上有太阳黑子的数量。为了获取我正在使用统计库的数据。

x <- datasets::sunspot.month
h <- hist(x, breaks=12, col="red", xlab="Month", main="Histogram with Normal Curve")

这是我目前拥有的代码,但我得到了一些奇怪的结果(可能是错误的结果),有什么我应该尝试的建议吗?

附:你可以忽略名义曲线,一旦我做对了,我会尝试自己做。

How the data looks like

【问题讨论】:

  • 有一个 x 轴不是连续变量的直方图真的有意义吗?条形图会不会更适合这些数据?
  • sunspot.month 是什么样的?
  • @user438383 我应该做一个直方图,我也不知道为什么
  • @r2evans true 我的描述含糊不清,下次会尝试更准确
  • 一些数据集是“众所周知的”,包括mtcarsiris,也许还有diamonds。其他人则鲜为人知,因此弄清楚您从哪里获得数据会有所帮助。如果它不在基础 R 中(datasets 或类似的)并且不在与问题相关的包中,那么最好提供一个可用的、明确的数据样本,例如 dput(head(x))(一些数据确实只是从控制台复制不好)。图像不好有几个原因,包括我无法在 R 控制台中复制图像和使用数据。

标签: r plot histogram


【解决方案1】:

因为它是一个时间序列,我们可以使用(等待它)time 函数提取“时间”组件:-)

time(sunspot.month)
#       Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
# 1749 1749 1749 1749 1749 1749 1749 1750 1750 1750 1750 1750 1750
# 1750 1750 1750 1750 1750 1750 1750 1750 1751 1751 1751 1751 1751
# 1751 1751 1751 1751 1751 1751 1751 1752 1752 1752 1752 1752 1752
# 1752 1752 1752 1752 1752 1752 1752 1752 1753 1753 1753 1753 1753
# ...

如果您仔细查看数据,“时间”值是十进制年,

options(digits=9)
head(time(sunspot.month))
# [1] 1749.00000 1749.08333 1749.16667 1749.25000 1749.33333 1749.41667

我们可以通过使用模数 1 (%% 1) 从中提取“仅月份”,这将为我们提供一个从 0 开始的数组。从那里,我们可以table它来获取每个月的计数,然后@user438383建议,呈现一个条形图。

另外,为了标记月份,我们可以使用base::month.abb 常量。

barplot(table(as.integer(1+12*(time(sunspot.month) %% 1))),
        names.arg=month.abb)

【讨论】:

  • 这对我来说相当先进,但我会检查一切并确保理解它。我非常感谢您的努力。
  • 我明白了。从time(sunspot.month) %% 1(查看[0,1) 上的所有分数)开始逐个进行,然后了解1+12* 对此做了什么。在那之后,table 只是给出每次出现的计数......我使用as.integer 有很多原因(包括stackoverflow.com/questions/9508518/…)。在那之后,我认为barplot(..., names.arg=) 就会到位:-)
  • 会做的,我保证我会理解所有这些,只是想说我不是为了解决问题而要求的,我只是被困在这里几个小时,不知道该怎么办接下来做。 Ty再次
猜你喜欢
  • 1970-01-01
  • 2016-06-09
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 2023-01-07
  • 1970-01-01
相关资源
最近更新 更多