擅长:python、mysql、java
<p>如果有大量的行,那么使用LineCollection比使用<code>plt.plot</code>要快,但是我还没有弄清楚如何在使用LineCollection时添加图例。{{artist{1}要创建一个代理,最好使用一个代理来创建一个行。在</p>
<p>既然你想要一个传说,你有少量的台词似乎是合理的。事实上,这是幸运的,因为试图用<code>plt.plot</code>绘制数千行是慢的秘诀。在</p>
<p>因此,如果您有少量的行,以下操作应该可以正常工作:</p>
<pre><code>import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
lines = [[(0, 1, 2, 3, 4), (4, 5, 6, 7, 8)],
[(0, 1, 2, 3, 4), (0, 1, 2, 3, 4)],
[(0, 1, 2, 3, 4), (8, 7, 6, 5, 4)],
[(4, 5, 6, 7, 8), (0, 1, 2, 3, 4)]]
z = np.array([0.1, 9.4, 3.8, 2.0])
legend_list = ['line_1', 'line_2', 'line_3', 'line_4']
fig, ax = plt.subplots()
cmap = plt.get_cmap('rainbow')
def normalize(z):
z = z.copy()
z -= z.min()
z /= z.max()
return z
for (x, y), color, label in zip(lines, normalize(z), legend_list):
plt.plot(x, y, label=label, color=cmap(color), lw=5)
m = cm.ScalarMappable(cmap=cmap)
m.set_array(z)
plt.colorbar(m)
ax.legend()
plt.savefig('/tmp/test.png')
</code></pre>
<p><img src="https://i.stack.imgur.com/E75CE.png" alt="enter image description here"/></p>