目录

问题描述:

方法1

 方法2

 方法3

问题描述:

如下两图,想让所有的黑线都共用一个图例bar,而不是每条线都重复图例。

 方法1

import matplotlib.pyplot as plt

import numpy as np

fig, ax = plt.subplots()

x = np.array([[0,1], [0,1], [0,1]])

y = np.array([[0,0], [1,1], [2,2]])

ax.plot([0,1],[0,2], label='foo', color='b')

lines = ax.plot(x.T, y.T, label='bar', color='k')

plt.setp(lines[1:], label="_") # 使用_ 表示不显示标签,此处为除了第一条线,其他都不用标签

# 注意:setp只能处理plot等画图的结果(无论是多条线还是一条线)

# 不能处理如 axLine, axLabel = ax.get_legend_handles_labels()中的axline结果

ax.legend()

plt.show()

 方法2

ax.plot(x.T, y.T, label='bar', color='k')

handles, labels = ax.get_legend_handles_labels()

ax.legend([handles[0]], [labels[0]], loc='best')

或者 

ax1 = ax.plot(x.T, y.T, label='bar', color='k')

plt.legend(handles=[ax1[0]], loc='best')

 方法3

import matplotlib.pyplot as plt

import numpy as np

fig, ax = plt.subplots()

x = np.array([[0,1], [0,1], [0,1]])

y = np.array([[0,0], [1,1], [2,2]])

ax.plot([0,1],[0,2], label='foo', color='b')

ax.plot(x.T, y.T, color='k')

ax.plot(x[0].T, y[0].T, label='bar', color='k')

# 画线时不用标签,然后再单独画第一条线时用标签

ax.legend()

plt.show()

参考:

python - 使用一个`plot`绘制多条曲线时的一个图例条目 - IT工具网 (coder.work)

python - One legend entry when plotting several curves using one `plot` call - Stack Overflow

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: