Matplotlib中的直方图上的多个断轴

所以我有一些数据,我希望通过频率密度(不相等的类宽度)直方图进行绘图,并通过一些在线搜索,我创建了这个让我做这个。Matplotlib中的直方图上的多个断轴

import numpy as np 

import matplotlib.pyplot as plt

plt.xkcd()

freqs = np.array([3221, 1890, 866, 529, 434, 494, 382, 92, 32, 7, 7])

bins = np.array([0, 5, 10, 15, 20, 30, 50, 100, 200, 500, 1000, 1500])

widths = bins[1:] - bins[:-1]

heights = freqs.astype(np.float)/widths

plt.xlabel('Cost in Pounds')

plt.ylabel('Frequency Density')

plt.fill_between(bins.repeat(2)[1:-1], heights.repeat(2), facecolor='steelblue')

plt.show()

您可能然而看到的,这个数据延伸到数千的x轴和y轴(密度)从微小的数据(< 1)至广阔数据(> 100)不用。为了解决这个问题,我需要打破这两个轴。我迄今发现的最接近的帮助是this,我发现它很难使用。你能帮忙吗?
谢谢,Aj。

回答:

您可以使用条形图。设置xtick标签以表示仓值。

随着对数Y比例

import numpy as np 

import matplotlib.pyplot as plt

plt.xkcd()

fig, ax = plt.subplots()

freqs = np.array([3221, 1890, 866, 529, 434, 494, 382, 92, 32, 7, 7])

freqs = np.log10(freqs)

bins = np.array([0, 5, 10, 15, 20, 30, 50, 100, 200, 500, 1000, 1500])

width = 0.35

ind = np.arange(len(freqs))

rects1 = ax.bar(ind, freqs, width)

plt.xlabel('Cost in Pounds')

plt.ylabel('Frequency Density')

tick_labels = [ '{0} - {1}'.format(*bin) for bin in zip(bins[:-1], bins[1:])]

ax.set_xticks(ind+width)

ax.set_xticklabels(tick_labels)

fig.autofmt_xdate()

plt.show()

以上是 Matplotlib中的直方图上的多个断轴 的全部内容, 来源链接: utcz.com/qa/266337.html

回到顶部