- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我试图绘制一些日期时间对象的直方图,但我永远无法让箱子与条形对齐。我的代码如下:
我首先导入我的东西并声明开始、结束和一天对象:
import datetime
import matplotlib.pyplot as plt
end = datetime.date(2017,5,14)
start = datetime.date(2017,5,8)
one_day = datetime.timedelta(days = 1)
然后我声明一个任意的日期列表:
date_list = [datetime.date(2017,5,14), datetime.date(2017,5,14),
datetime.date(2017,5,14), datetime.date(2017,5,9), datetime.date(2017,5,13),
datetime.date(2017,5,12), datetime.date(2017,5,11),
datetime.date(2017,5,11), datetime.date(2017,5,9)]
然后我查看开始和结束之间的天数范围(在本例中为一周),将每个日期添加到列表中:
week = []
for i in range((end-start).days+1):
week.append(start + (i)*one_day)
这样做的原因是一周中的某些日子没有出现在 date_list 中(我知道对于这种情况我可以跳过它,但我希望它可以扩展到其他 date_lists)。
然后我用 hist() 绘图:
plt.hist(date_list, bins = len(week)+1)
plt.show()
我已经尝试了各种 bin 格式与各种 +1 以及范围和对齐方式的组合,但日期从未位于栏中一致的位置。
最佳答案
如果简单地设置 bin 的数量,bin 将在(数据的)第一个和最后一个值之间平均分配。由于数据是例如缺少 start
值,垃圾箱将小于一整天。
为了克服这个问题,需要明确地将所需的 bins 设置为 hist
的 bins
参数。不幸的是,这里不能直接使用日期时间列表,因此需要先将日期时间转换为数字。这可以使用 matplotlib 的 matplotlib.dates.date2num
方法来完成。
完整示例:
import datetime
import matplotlib.pyplot as plt
from matplotlib.dates import date2num
end = datetime.date(2017,5,14)
start = datetime.date(2017,5,8)
one_day = datetime.timedelta(days = 1)
date_list = [datetime.date(2017,5,14), datetime.date(2017,5,14),
datetime.date(2017,5,14), datetime.date(2017,5,9), datetime.date(2017,5,13),
datetime.date(2017,5,12), datetime.date(2017,5,11),
datetime.date(2017,5,11), datetime.date(2017,5,9)]
week = []
for i in range((end-start).days+1):
week.append(start + (i)*one_day)
numweek = date2num(week)
plt.hist(date_list, bins = numweek, ec="k")
plt.gcf().autofmt_xdate()
plt.show()
请注意,datetime.date(2017,5,14)
是 (2017,5,13)
和 (2017 ,5,14)
,因此您可能希望将结束日期设置为datetime.date(2017,5,15)
。
关于python - 无法使用 hist() 函数对齐日期时间对象直方图中的 bin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43954182/
我是一个 matlab 新手,我想在同一个图形上叠加一些历史拟合。我知道函数 histfit,但不幸的是我无法删除 hist,只能保留曲线。我想一旦我知道该怎么做,我就可以使用“坚持”来添加几条曲线。
对不起,如果我的问题看起来很基本,但我找不到直接的答案。目前正在学习 pandas 可视化,但不了解 df.hist() 与 df.plot.hist() 之间的区别(参见 here 和 here ,
在 0.19 的 pandas.DataFrame 上有两种 hist 方法: DataFrame.hist DataFrame.plot.hist 起初我以为它们是一样的,但实际上它们有不同的论点。
x = [1: 1000] hist(x) 然后,有显示直方图的图,但是如果我设置轴属性和 Y 轴来记录。我在图中看不到任何东西。如何绘制具有对数刻度的直方图。 最佳答案 尝试 set(gca, 'X
我正在研究 gitimmersion 并创建别名 [复数]。除了我的命令外,一切正常。 $ git config --global alias.hist log --pretty=format: '%
是否可以只用一种颜色绘制条件为 X < 980 的条形图?在下面的直方图中。 R代码: Sample <- rnorm(2500,1000,20) # 2500 norm values plot(Sa
我正在学习 Python 在线类(class)。这是代码,一字不差。它进行 100 次随机游动的蒙特卡罗重复,每次 10 步。 import numpy as np import matplotlib
plt.hist 密度参数不起作用。 我试图在 plt.hist 函数中使用密度参数来标准化我的情节中的股票返回,但它没有用 下面的代码对我来说很好用,并给了我我想要的概率密度函数 import ma
使用时 hist()在 R 和设置中 freq=FALSE我应该得到一个密度。但是,我没有。除了只显示计数时,我还得到其他数字。我还需要正常化。 例如: > h = hist(c(1,2,1,3,1,
我有一个长度为 15,000 的数据集,实际值从 0 到 100。我的数据集严重偏左。我正在尝试完成以下分类:0、1、2、3、4、5、6、7、8、9、10、>10。到目前为止我所做的是创建以下内容:
我想不出一种方法来以范围格式打印值的直方图。我想写一个代码来输出项目和计数(乘以'x'))。如果一个项目不存在,输出将是 ''这是我到目前为止写的: item=['15', '14', '13', '
我正在尝试平滑点之间的线。增加垃圾箱的数量是一种方法,但根据我的真实数据,仍然无法解决问题。 def plotstep_test(x, y, z): plt.figure(figsize=[1
我正在尝试制作一个堆叠直方图,其中每个堆叠组件都有不同的线条样式和颜色。 color 参数接受每个组件的颜色列表。但线条样式参数 ls 则不然。有没有办法分别控制每个堆叠组件的面和线型? import
我希望创建一个条形之间没有间隙的直方图。尝试添加参数 bin 或 range 但没有成功。 import numpy as np from matplotlib import pyplot as pl
我有一个二维 numpy 数组,其中 1.0e6 作为无数据值。我想生成数据的直方图,虽然我已经成功了,但这并不是最好的方法。 from matplotlib import pyplot import
我正在尝试在特定范围内制作直方图,但 matplotlib.pyplot.hist() 函数不断将范围裁剪到包含条目的容器中。玩具示例: import numpy as np import matpl
我正在保存两个单独的图形,每个图形都应该包含 2 个图。 问题是第一个图没问题,但第二个图不会在新图上被覆盖,而是在前一个图上被覆盖,但在保存的图中,我只找到一个图: 这是第一个数字,我正确地得到了第
我知道 this similar question被问到;但是,如果可能的话,我正在寻找进一步的说明,以便更好地理解 .groupby。 Data used 我想要与这样完全相同的结果,但使用 .gr
刚拿起R,我有以下问题: 假设我有以下 data.frame: v1 v2 v3 3 16 a 44 457 d 5 23 d
我有一个巨大的 DataFrame ('df'),其中包含不同的列,其中一个将名称存储为字符串值 ('name')。现在,我想简单地绘制一个直方图,其中包含 DataFrame 中每个名称的频率。但是
我是一名优秀的程序员,十分优秀!