尝试在Matplotlib

时间:2017-07-13 02:29:13

标签: python matplotlib

我正在尝试创建一个包含线条和散点图的图例。以下是我得到的。 enter image description here

我想要的是在模型文本上方的图例(最好)中出现的线条。如果可能的话,所有X也是如此。下面是我正在使用的代码。

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

fig = plt.figure()

accuracy_line = plt.plot([1, 2, 3], [31,32,35], linewidth=2.0, 
label='Accuracy')
oov_line = plt.plot([1, 2, 3], [38,35,31], linewidth=2.0, label="OOV")
plt.axis([0.5, 3.5, 30, 40])
plt.xlabel('label', fontsize=14, color='Black')
plt.title("title")
plt.setp(accuracy_line, 'color', 'g', 'linewidth', 2.0)
plt.setp(oov_line, 'color', 'r', 'linewidth', 2.0)
no_lm = plt.scatter(1, 31, marker='x', s=100, linewidth=4.0, color='k')
add_corp = plt.scatter(2, 32, marker='x', s=100, linewidth=4.0, color='b')
syn_data = plt.scatter(3, 35, marker='x', s=100, linewidth=4.0, color='c')

plt.legend([accuracy_line, oov_line, no_lm, add_corp, syn_data], ['Accuracy', 'OOVs', 'Model 1', 'Model 2', 'Model 3'])
plt.show()

我已经尝试了一些我在这里找到的其他东西,但我无法让它出来。

1 个答案:

答案 0 :(得分:1)

传说中多个X的问题很奇怪,但我没有表明,我使用matplotlib 2.0.0和Python 3.5.1。

要获取线条图例,只需将legend行修改为:

即可访问图表的第一个索引
plt.legend([accuracy_line[0], oov_line[0], no_lm, add_corp, syn_data], ['Accuracy', 'OOVs', 'Model 1', 'Model 2', 'Model 3'])