【问题标题】:Legend overwritten by plot - matplotlib图例覆盖的图例 - matplotlib
【发布时间】:2020-08-06 16:38:06
【问题描述】:

我有一个如下所示的情节:

我想把线图和标记的标签都用红色。然而,传说没有出现,因为它的情节正在占用它的空间。

更新

事实证明我不能在plt.legend()中放入多个字符串

我使用以下方法使图形变大了:

 fig = plt.gcf()
 fig.set_size_inches(18.5, 10.5)

但是现在我在图例中只有一个标签,标记出现在线条图上,而我想要两个:一个单独用于标记,另一个单独用于线条:

更新代码:

plt.plot(range(len(y)), y, '-bD',  c='blue', markerfacecolor='red', markeredgecolor='k', markevery=rare_cases, label='%s' % target_var_name)

fig = plt.gcf()
fig.set_size_inches(18.5, 10.5)

# changed this over here
plt.legend()

plt.savefig(output_folder + fig_name)
plt.close()

【问题讨论】:

  • 我可能错了,但传说就在那里!它是右上角的灰色方块。
  • @gboffi 是的,我怎样才能让它正确显示

标签: python-3.x matplotlib line-plot


【解决方案1】:

您想要做的事情(单个对象有两个标签)并非完全不可能,但是分开绘制线条和稀有值要容易得多,例如

# boilerplate
import numpy as np
import matplotlib.pyplot as plt

# synthesize some data 
N = 501
t = np.linspace(0, 10, N)
s = np.sin(np.pi*t)
rare = np.zeros(N, dtype=bool); rare[:20]=True; np.random.shuffle(rare)

plt.plot(t, s, label='Curve')
plt.scatter(t[rare], s[rare], label='rare')
plt.legend()

plt.show()

更新

[...] 原来我不能在plt.legend() 中放入多个字符串

嗯,你可以,只要①几个字符串在一个可迭代的(元组或列表)中②字符串的数量(即标签)等于情节中艺术家的数量(即事物) .

plt.legend(('a', 'b', 'c')) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多