我想使用不同的线条样式绘制多个直方图,因为我无法使用颜色来区分它们。我明白了,但这些看起来非常相似,因为两个地块的分布非常相似。我可以获得不同的标记,如点,星等,或者更好地区分这些标记吗? 这就是我所拥有的
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()
答案 0 :(得分:2)
您可以使用阴影,例如调用hatch="\\\\"
时hist
。我不相信它看起来更好,但它至少是一种选择。
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
等,
(此处我使用1
,2
和3
作为线宽)
不同的灰色阴影,与 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)