线图 - 为奇数个子图绘制单个图例
Lineplot - plot a single legend for uneven number of subplots
我正在绘制下图,其中我想绘制的是适用于所有人的单个图例,本质上这将是一个小方框,其中蓝色线为 AB=0,绿色线为 AB = 1 .
此外,我正在使用 plt.subplot(...
,因为可能需要处理不均匀的列数来绘制。
我试着把它放在盒子外面,因为它在任何地方都看不到。
plt.figure(figsize=(16,10))
plt.subplots_adjust(hspace=0.3)
plt.suptitle("Some title", fontsize=18, y=0.95)
plt.style.use('seaborn-darkgrid')
for i, col in enumerate(tms_0.columns):
ax = plt.subplot(3,4,i+1)
ax.plot(tms_0.index, tms_0[col], label=col, color='skyblue')
ax.plot(tms_1.index, tms_1[col], label=col, color='green')
#plt.legend(loc='upper left')
#ax.set_title(col.upper())
ax.set_xticks([])
fig.legend(["X", "Y"], loc='lower right', bbox_to_anchor=(1,-0.1), ncol=2, bbox_transform=fig.transFigure)
plt.show()
这段代码中的 col
实际上是数据框中的一列,所以我不能以正常方式使用它,这就是为什么我在 set_title
.[=15 中使用它的原因=]
我找到了一些基于此线程的选项 How to manually create a legend
legend_elements = [plt.Line2D([0], [0], color='skyblue', lw=2.5, label='ClientAB=0'),
plt.Line2D([0], [0], color='green', lw=2.5, label='ClientAB=1')]
ax.legend(handles=legend_elements, bbox_to_anchor=(1.2, 4.05))
我正在绘制下图,其中我想绘制的是适用于所有人的单个图例,本质上这将是一个小方框,其中蓝色线为 AB=0,绿色线为 AB = 1 .
此外,我正在使用 plt.subplot(...
,因为可能需要处理不均匀的列数来绘制。
我试着把它放在盒子外面,因为它在任何地方都看不到。
plt.figure(figsize=(16,10))
plt.subplots_adjust(hspace=0.3)
plt.suptitle("Some title", fontsize=18, y=0.95)
plt.style.use('seaborn-darkgrid')
for i, col in enumerate(tms_0.columns):
ax = plt.subplot(3,4,i+1)
ax.plot(tms_0.index, tms_0[col], label=col, color='skyblue')
ax.plot(tms_1.index, tms_1[col], label=col, color='green')
#plt.legend(loc='upper left')
#ax.set_title(col.upper())
ax.set_xticks([])
fig.legend(["X", "Y"], loc='lower right', bbox_to_anchor=(1,-0.1), ncol=2, bbox_transform=fig.transFigure)
plt.show()
这段代码中的 col
实际上是数据框中的一列,所以我不能以正常方式使用它,这就是为什么我在 set_title
.[=15 中使用它的原因=]
我找到了一些基于此线程的选项 How to manually create a legend
legend_elements = [plt.Line2D([0], [0], color='skyblue', lw=2.5, label='ClientAB=0'),
plt.Line2D([0], [0], color='green', lw=2.5, label='ClientAB=1')]
ax.legend(handles=legend_elements, bbox_to_anchor=(1.2, 4.05))