matplotlib - 子图中的独特图例(matplotlib)
问题描述
我正在尝试以 (2,3) 的格式创建 5 个子图,其中 (1,3) 是空白空间,我想在其中放置图例。每个子图中有六行,我想为此制作传奇。我得到了子图,格式正确,但很难得到:
(1) 独特的传说;使用 fig.legend(),图例中充满了重复的线条,我想纯粹根据线条的名称来创建图例;(2)将图例放置在子图(1,3)的空白处。
感谢您的帮助。
fig, axs = plt.subplots(2,3)
for i, j in zip(g_list,c_list):
axs[0,0].plot(global_epsilon_T()["g_"+i+"_vlt"], global_epsilon_T()["g_"+i], color=j, linewidth=1, label = "(c) "+i)
axs[0,1].plot(global_epsilon_B()["g_"+i+"_vlt"], global_epsilon_B()["g_"+i], color=j, linewidth=1, label = "(c) "+i)
axs[0,2].plot(global_slope()["g_"+i+"_vlt"], global_slope()["g_"+i], color=j, linewidth=1, label = "(c) "+i)
axs[1,0].plot(global_trb()["g_"+i+"_vlt"], global_trb()["g_"+i], color=j, linewidth=1, label = "(c) "+i)
axs[1,1].plot(global_dis()["g_"+i+"_vlt"], global_dis()["g_"+i], color=j, linewidth=1, label = "(c) "+i)
axs[1,2].set_visible(False)
解决方案
您可以通过执行将图例归因于每个子图,axs[i,j].legend()
并为每个图提供一个图例,显示该子图的标签。如果您想在 subplot (1,3) 上拥有所有标签,请执行以下操作并将句柄和您希望它显示的标签传递给它:
axs[1,3].legend([ax for ax in axs],[label for label in listOfLabels])
或者,您可以将其归因于图形,因此plt.legend()
在您的 for 循环之后,它应该显示一个图例,其中包含图形对象上的所有标签,而不是子图。
另外,您是否对此没有错误:label = "(c) "+i
也许尝试label = "(c)%i" %(i)
推荐阅读
- python - 如何从保存的模型中加载权重
- reactjs - React 中的 onClick 处理程序拾取子节点
- game-engine - IRC 会成为游戏应用交流的良好媒介吗
- c++ - OpenSSL BN_sub() 不能做有符号减法
- swagger - 使用 aws-api-gateway 模型,我如何要求对象包含至少 1 个有效密钥
- javascript - 有没有办法将多个相同的对象添加到购物车?
- asp.net - 如果有两个字段,如果一个为空,则在 TemplateField 中显示空白
- docker - Docker for Desktop Kubernetes 无法连接到服务器:拨号 tcp [::1]:6445
- c# - 有没有办法在 UWP 应用程序中使用 WUApiLib API?
- php - 访问另一个类中的一个类的数组而不在php中传递参数