python多组直⽅图画图_python–使⽤matplotlib的多个并排直
⽅图?
我有⼀个软件必须处理⼤量不同的数据,并且可能需要不同的时间来处理它.随着软件的修改,处理数据所需的时间也会发⽣变化,所以我想创建⼀个显⽰时间差异和异常值的图表,因为理想情况下,这个程序每个部分需要⼤约相同的时间数据(这听起来很奇怪,不切实际,我知道,但在这⾥和我⼀起滚动).
起初,我想过使⽤箱形图,但我认为它们是不合适的,因为完全有可能将⼀半数据集悬停在⼀个值附近,另⼀半围绕另⼀个徘徊,我感觉不到箱形图会很好地说明这⼀点.所以我决定尝试使⽤直⽅图,但我⽆法弄清楚如何让matplotlib以我想要的⽅式绘制它.我想要⼀个单独的数字,X轴标有软件版本,Y轴显⽰处理数据集所需的时间,有多个直⽅图,就像我做的这个模型:
该图表显⽰在0.1版本中,⼤多数数据集在2-4秒内处理,由于某种原因需要12秒才能处理⼀组数据集. v0.1a摆脱了那些长的异常值,但⼀切都花了更长的时间. 0.1b⽐0.1a略快.最后,0.2显⽰了很⼤的速度提升,但⼜引⼊了异常值.
我怎样才能让matplotlib创建这样的情节?
matplotlib中subplot解决⽅法:
这是⼀个(⾮常)基本的模型,说明如何实现这⼀⽬标:
import matplotlib.pyplot as plt
import numpy as np
number_of_bins = 20
number_of_data_points = 1000
ax = plt.subplot(111)
data_set = [al(0, 1, number_of_data_points),
al(6, 1, number_of_data_points),
al(-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()
这个缺乏我承认的很多改进,例如:MID_VALUES是⼿动选择的,这取决于数据集并且可以⾃动化.不过,您可以将其变为更有⽤的格式.
标签:python,matplotlib
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论