gpt4 book ai didi

matplotlib - matplotlib 中的条形图应该如何设置宽度?

转载 作者:行者123 更新时间:2023-12-05 01:16:34 31 4
gpt4 key购买 nike

我使用的是 python 2,下面的代码只是使用了一些示例数据,我的实际数据可能有不同的长度,并且可能不是很细。

  import numpy as np
import datetime
import matplotlib
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

x_values = [datetime.datetime(2018, 11, 8, 11, 16),
datetime.datetime(2018, 11, 8, 11, 17),
datetime.datetime(2018, 11, 8, 11, 18),
datetime.datetime(2018, 11, 8, 11, 19),
datetime.datetime(2018, 11, 8, 11, 20),
datetime.datetime(2018, 11, 8, 11, 21),
datetime.datetime(2018, 11, 8, 11, 22),
datetime.datetime(2018, 11, 8, 11, 23),
datetime.datetime(2018, 11, 8, 11, 24),
datetime.datetime(2018, 11, 8, 11, 25),
datetime.datetime(2018, 11, 8, 11, 26),
datetime.datetime(2018, 11, 8, 11, 27),
datetime.datetime(2018, 11, 8, 11, 28),
datetime.datetime(2018, 11, 8, 11, 29),
datetime.datetime(2018, 11, 8, 11, 30),
datetime.datetime(2018, 11, 8, 11, 31)]
y_values = [1392.1017964071857,
1392.2814371257484,
1392.37125748503,
1227.6802721088436,
1083.1,
1317.0461538461539,
1393.059880239521,
1393.4011976047905,
1393.491017964072,
1393.8502994011976,
1318.3461538461538,
1229.4965986394557,
1394.2095808383233,
1394.3892215568862,
1394.6586826347304,
1394.688622754491]

rects1 = ax.bar(x_values, y_values)
fig.tight_layout()
plt.show()

我应该如何自动设置条的宽度?因为它是我得到以下内容:

no width set[1]

如果我将宽度设置为 0.0006,那么对于示例数据来说它看起来不错:

width manually set to 0.0006[2]

从中我发现 matplotlib 以天为单位测量 x 轴(因为 0.0007 天几乎正好是 1 分钟,这与我的时间间隔相匹配,而 0.0006 给出了条形之间的间隙)但是如果我得到了那就不好了每小时值或秒,或周等。肯定有一个自动处理的选项吗?

最佳答案

如果您希望条形宽度不大于任何连续日期时间之间的差,您可以计算该数字并将其提供给条形的 width 参数。

import matplotlib.dates as mdates 

width = np.min(np.diff(mdates.date2num(x_values)))
ax.bar(x_values, y_values, width=width, ec="k")

enter image description here

关于matplotlib - matplotlib 中的条形图应该如何设置宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53209200/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com