Matplotlib表格图例

2024-09-27 07:26:56 发布

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

我有很多数据集,我正试图绘制,我正在寻找一个表格的方式来表示传说。我正在生成的图的形式如下:

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])

enter image description here

我正在尝试生成该表单的图例:

------------------------------
|               'r'     'g'  |
| ':'  m = 1   a = 1   a = 4 |
|'--'  m = 2   a = 2   a = 5 |
| '-'  m = 3   a = 3   a = 6 |
------------------------------

其中“r”、“g”是红色和绿色的标记,“:”、“-”、“-”是具有正确样式的黑色标记。这可行吗?我已经环顾了很多地方,但我还没有找到一个好方法,可以用这种方式在一个图例上放置两组独立的标记


Tags: 数据in标记addfortime方式绘制
1条回答
网友
1楼 · 发布于 2024-09-27 07:26:56

如果允许细微变化,则可以为每个组合创建标签并使用多列:

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()

legend with columns

以不同顺序打印(或手动重新排列控制柄和标签)可以得到两列:

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))

legend with 2 columns

如果您真的想要更复杂的图例,请参见Table legend in matplotlib

相关问题 更多 >

    热门问题