gpt4 book ai didi

python - 使用 matplotlib 的多个并排直方图?

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:15 25 4
gpt4 key购买 nike

我有一个软件必须处理大量不同的数据,并且可能需要不同的时间来处理它。随着软件的修订,处理数据所需的时间发生变化,因此我想创建一个图表来显示时间方差和异常值,因为理想情况下,这个程序应该为每个部分花费大约相同的时间数据(我知道这听起来很奇怪和不切实际,但请随我在这里滚动)。

起初,我想过使用箱形图,但我认为它们是不够的,因为完全有可能让一半的数据集徘徊在一个值附近,另一半徘徊在另一个值附近,我觉得箱形图可以很好地说明这一点。所以我决定尝试使用直方图,但我不知道如何让 matplotlib 以我想要的方式绘制它。我想要一个单一的数字,X 轴标有软件版本,Y 轴显示处理数据集所花费的时间,以及多个直方图,就像我制作的这个模型:

enter image description here

这张图显示,在 0.1 版中,大多数数据集的处理时间为 2-4 秒,由于某种原因,一堆数据集需要 12 秒。 v0.1a 摆脱了那些长异常值,但一切都花费了更长的时间。 0.1b 只比 0.1a 快一点。最后,0.2 显示出很大的速度提升,但再次引入了异常值。

如何让 matplotlib 创建这样的图?

最佳答案

这是一个(非常)基本的模型,说明如何实现这一点:

import matplotlib.pyplot as plt
import numpy as np

number_of_bins = 20
number_of_data_points = 1000

ax = plt.subplot(111)

data_set = [np.random.normal(0, 1, number_of_data_points),
np.random.normal(6, 1, number_of_data_points),
np.random.normal(-3, 1, number_of_data_points)]

MID_VALUES = [0, 200, 400]
labels = ["v1", "v2", "v3"]


for MID_VAL, y in zip(MID_VALUES, data_set):

hist, bin_edges = np.histogram(y, bins=number_of_bins)

bottom = bin_edges[:-1]
heights = np.diff(bin_edges)
lefts = MID_VAL - .5 * hist

ax.barh(bottom, hist, height=heights, left=lefts)

ax.set_xticks(MID_VALUES)
ax.set_xticklabels(labels)

plt.show()

enter image description here

我承认这缺乏很多改进,例如:MID_VALUES 是手动选择的,这将取决于数据集并且可以自动化。不过,您可以将其转换为更有用的格式。

关于python - 使用 matplotlib 的多个并排直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942703/

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