多轴的单个图例

2024-04-29 19:31:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下示例代码:

fig1.suptitle('Test')
ax1 = fig1.add_subplot(221)
ax1.plot(x,y1,color='b',label='aVal')
ax2 = ax1.twinx()
ax2.plot(x,y2,color='g',label='bVal')
ax2.grid( ls='--', color='black')
legend([ax1,ax2], loc=2)

子块在同一子块上有两个不同比例的轴,我只想要两个轴的一个图例。我尝试了上面的代码,但它不起作用,只能从ax2生成详细信息。有什么想法吗?


Tags: 代码testadd示例plotlabelcolor子块
2条回答

我想这是一个可行的解决方案!有比这更好的办法吗?

fig1.suptitle('Test')
ax1 = fig1.add_subplot(221)
ax1.plot(x,y1,color='b',label='aVal')
ax2 = ax1.twinx()
ax2.plot(x,y2,color='g',label='bVal')
ax2.grid( ls='--', color='black')
h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()
ax1.legend(h1+h2, l1+l2, loc=2)

这确实是一个老职位,但我想我找到了一个更容易的方法,让更多的控制。

这是python3.5上的(matplotlib.版本'1.5.3'):

import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
plt.suptitle('Test')
ax2 = ax1.twinx()
a, =  ax1.plot([1, 2, 3], [4, 5, 6], color= 'blue', label= 'plt1')
b, = ax2.plot([7, 8, 9],[10, 11, 12], color= 'green', label= 'plt2')
p = [a, b]
ax1.legend(p, [p_.get_label() for p_ in p],
           loc= 'upper center', fontsize= 'small')

show()

相关问题 更多 >