这是与根据颜色图设置线条颜色中给出的答案相关的衍生问题,其中建议一个很好的解决方案是根据颜色条绘制几条带有颜色的线条(参见下面的代码和输出图像)。
我有一个存储与每条绘制线关联的字符串的列表,如下所示:
legend_list = ['line_1', 'line_2', 'line_3', 'line_4']
我想将这些字符串作为图例添加到绘图右上角的框中(第一个字符串对应于第一条绘制的线,依此类推)。我怎么能这样做?
如果有必要,我愿意不使用LineCollection
,但我需要保留颜色栏和与之关联的每条线的颜色。
代码和输出
import numpy
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
# The line format you curently have:
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)]]
# Reformat it to what `LineCollection` expects:
lines = [zip(x, y) for x, y in lines]
z = np.array([0.1, 9.4, 3.8, 2.0])
fig, ax = plt.subplots()
lines = LineCollection(lines, array=z, cmap=plt.cm.rainbow, linewidths=5)
ax.add_collection(lines)
fig.colorbar(lines)
# Manually adding artists doesn't rescale the plot, so we need to autoscale
ax.autoscale()
plt.show()