python - Matplotlib 表格图例
问题描述
我有许多要绘制的数据集,并且正在寻找一种表示图例的表格方式。我正在生成的情节具有以下形式:
mul_list = [1,2,3]
add_list = [[1,2,3],[4,5,6]]
linestyles = [':','--','-']
linecolors = ['r','g']
time = np.linspace(0,5)
for i,mul in enumerate(mul_list):
for j,add in enumerate(add_list):
plt.plot(time,mul*time+add[i],linestyle = linestyles[i],color = linecolors[j])
我正在尝试生成以下形式的图例:
------------------------------
| 'r' 'g' |
| ':' m = 1 a = 1 a = 4 |
|'--' m = 2 a = 2 a = 5 |
| '-' m = 3 a = 3 a = 6 |
------------------------------
其中 'r','g' 将是具有红色和绿色颜色的标记,而 ':','--','-' 将是具有正确样式的黑色标记。这是可行的吗?我环顾四周,我还没有找到一个很好的方法来以这种方式在图例上放置两组单独的标记。
解决方案
如果您允许细微的变化,您可以为每个组合创建标签并使用多个列:
from matplotlib import pyplot as plt
mul_list = [1, 2, 3]
add_list = [[1, 2, 3], [4, 5, 6]]
linestyles = [':', '--', '-']
linecolors = ['r', 'g']
time = np.linspace(0, 5)
for i, mul in enumerate(mul_list):
for j, add in enumerate(add_list):
plt.plot(time, mul * time + add[i], linestyle=linestyles[i], color=linecolors[j], label=f'm={mul} a={add[i]}')
plt.legend(ncol=len(mul_list))
plt.show()
以不同的顺序绘图(或手动重新排列句柄和标签)可以给出两列:
for j, add in enumerate(add_list):
for i, mul in enumerate(mul_list):
plt.plot(time, mul * time + add[i], linestyle=linestyles[i], color=linecolors[j], label=f'm={mul} a={add[i]}')
plt.legend(ncol=len(add_list))
如果您真的想要更复杂的图例,另请参阅matplotlib 中的表图例。
推荐阅读
- python - 如何在两列熊猫的元素之间应用函数
- sql - Powershell 附加到 SQL 返回的查询
- postgresql - 带有spring boot的Postgresql - 每当我启动应用程序时数据库都是空的
- node.js - 如何在 npm start 上设置 npm config set proxy
- java - 如何在春季合约测试中通过自定义安全性?
- javascript - 具有自定义类 javascript 的 Vuex 无法提交突变
- scala - scala用状态设计模式替换if else
- unity3d - 适用于 Unity 的 SteamVR 插件
- amazon-cloudformation - cloudformation 胶水作业类型 python shell
- python - 单核上的多处理?