如何在图例中添加多个标签,每个曲线一个

时间:2017-06-10 10:45:29

标签: python matplotlib scipy

我编写了一个代码来生成3个不同矢量集的图形 我能够将第一条对角线的标签添加为label='Diagonal',但是当我将数据绘制成循环并尝试为每个数据集表示标签时,它现在显示在图形上。只显示第一个标签。

如何显示其他标签?

import numpy as np
import pylab as pl


pl.plot([0, 1], [0, 1], '--',label='AUC', lw=2)
pl.xlim([-0.05, 1.05])
pl.ylim([-0.05, 1.05])
pl.xlabel('FP Rate',fontsize=22)
pl.tick_params(axis='x', labelsize=22)
pl.tick_params(axis='y', labelsize=22)
pl.ylabel('TP Rate',fontsize=22)
pl.legend(loc="lower right")
pl.axis('tight')



n = ("data_1", "data_2", "data_3", "data_4")
for x, i in enumerate(range(0,3)):

    sampl_1 = sorted(np.random.uniform(low=0, high=1.0, size=(20,)))
    sampl_2 = sorted(np.random.uniform(low=0, high=1.0, size=(20,)))
    pl.plot(sampl_1, sampl_2, '-', label=n[x], lw=2)

pl.show()

2 个答案:

答案 0 :(得分:2)

您在将其他线条添加到地块之前创建了图例。为了让图例包含图中的所有标记对象,请在脚本末尾创建图例。

import numpy as np
import pylab as plt

plt.plot([0, 1], [0, 1], '--',label='AUC', lw=2)
plt.xlabel('FP Rate')
plt.ylabel('TP Rate')
plt.axis('tight')

n = ("data_1", "data_2", "data_3", "data_4")
for x, i in enumerate(range(0,3)):

    sampl_1 = sorted(np.random.uniform(low=0, high=1.0, size=(20,)))
    sampl_2 = sorted(np.random.uniform(low=0, high=1.0, size=(20,)))
    plt.plot(sampl_1, sampl_2, '-', label=n[x], lw=2)

plt.legend(loc="lower right")
plt.show()

enter image description here

答案 1 :(得分:0)

我有搜索并尝试过这对我有用:

import numpy as np
import pylab as pl


pl.plot([0, 1], [0, 1], '--',label='Diagonal', lw=2)
pl.xlim([-0.05, 1.05])
pl.ylim([-0.05, 1.05])
pl.xlabel('FP Rate',fontsize=22)
pl.tick_params(axis='x', labelsize=22)
pl.tick_params(axis='y', labelsize=22)
pl.ylabel('TP Rate',fontsize=22)
pl.legend(loc="lower right")
pl.axis('tight')



n = ["data_1", "data_2", "data_3", "data_4"]
for x, i in enumerate(range(0,3)):

    sampl_1 = sorted(np.random.uniform(low=0, high=1.0, size=(20,)))
    sampl_2 = sorted(np.random.uniform(low=0, high=1.0, size=(20,)))
    pl.plot(sampl_1, sampl_2, '-', label=n[x], lw=2)
pl.legend()
pl.show()
pl.close()