从pyplot直方图中删除右边缘

时间:2017-10-14 02:06:28

标签: python matplotlib

我从Matplotlib网站引用此example。在蓝色“经验”曲线的右侧,有一条垂直的蓝线,它是最右边的条的右边缘。

如何在不更改x轴限制的情况下删除此垂直蓝线?

2 个答案:

答案 0 :(得分:8)

这是默认行为。你需要删除最后一点。

n, bins, patches = ax.hist(x, n_bins, normed=1, histtype='step',
                           cumulative=True, label='Empirical')

patches[0].set_xy(patches[0].get_xy()[:-1])

其余的都一样。

enter image description here

答案 1 :(得分:2)

垂直线是如何生成绘图的工件。你正在制作条形图,但只绘制角落;但是最后一个角总是为0.你可以通过使用numpy(这是pyplot使用的)生成直方图数据来绕过这个问题,并制作数据的步骤图。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)

mu = 200
sigma = 25
n_bins = 50
x = np.random.normal(mu, sigma, size=100)

fig, ax = plt.subplots(figsize=(8, 4))

# get the counts and edges of the histogram data
cnt, edges = np.histogram(x, bins=n_bins, normed=1)
# plot the data as a step plot.  note that edges has an extra right edge.
ax.step(edges[:-1], cnt.cumsum())

plt.show()

enter image description here