使用统计库绘制直方图

Ploting histograms using stats library

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

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

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

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

How the data looks like

因为它是一个 time-series,我们可以使用(等待)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)