使用不同的线型python绘制多个直方图

时间:2017-04-22 17:25:54

标签: python matplotlib

我想使用不同的线条样式绘制多个直方图,因为我无法使用颜色来区分它们。我明白了,但这些看起来非常相似,因为两个地块的分布非常相似。我可以获得不同的标记,如点,星等,或者更好地区分这些标记吗? 这就是我所拥有的

import matplotlib
matplotlib.use('PS')
import matplotlib.pyplot as plt
plt.hist(values1, histtype='step', linestyle=':',label=topic1)
plt.hist(values2, histtype='step', linestyle='--',color=color, label=topic2)
plt.hist(values3,histtype='step', linestyle='solid', label=topic3)

plt.legend(loc="upper right")
plt.legend(frameon=False)
plt.show()
plt.savefig(allplotfile)
plt.close()

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以使用阴影,例如调用hatch="\\\\"hist。我不相信它看起来更好,但它至少是一种选择。

enter image description here

import matplotlib.pyplot as plt
plt.style.use("grayscale")
import numpy as np; np.random.seed(1)
plt.rcParams["figure.figsize"] = (4,3)

vals = np.arange(2,5.1,0.5)
p = np.array([1,.2,.36,.15,.38,.28,.4])
p = p/np.sum(p)
a = np.random.choice(vals, size=100, p=p)
b = np.random.choice(vals, size=100, p=p)
c = np.random.choice(vals, size=100, p=p)


plt.hist(a, histtype='step', linestyle=':',label="topic1", hatch="\\\\")
plt.hist(b, histtype='step', linestyle='--', label="topic2", hatch="//")
plt.hist(c,histtype='step', linestyle='solid', label="topic3", hatch="++")

plt.legend(loc="upper right")
plt.legend(frameon=False)
plt.show()

不同的线宽也可能有所帮助:lw=2等,
(此处我使用123作为线宽)

enter image description here

不同的灰色阴影,与 alpha 设置相结合也可能有所帮助:

plt.hist(a, linestyle=':',  color=plt.cm.gray(0.1), alpha=0.5)
plt.hist(b, linestyle='--' ,color=plt.cm.gray(0.4), alpha=0.5)
plt.hist(c, linestyle='solid', color=plt.cm.gray(0.8), alpha=0.5)

enter image description here