【问题标题】:Matplotlib 1.3.0, legend line and text do not matchMatplotlib 1.3.0,图例行和文字不匹配
【发布时间】:2013-08-30 07:25:34
【问题描述】:

在这种情况下,图例标签来自 txt 文件,末尾带有 '\n' 字符。运行这个 sn-p:

lines = np.array([[1,1],[2,2],[3,3]])
plt.rc('font', size=10.)
for i, line in enumerate(lines):
    plt.plot(range(2), line, label='line number ' + str(i) +'\n')
plt.ylim(0,4)
plt.legend()
plt.show()

Matplotlib 1.2.11.3.0你会得到不同的传说:

  • Matplotlib 1.2.1

  • Matplotlib 1.3.0

【问题讨论】:

  • 您能否将其简化为一个最小示例并将代码粘贴到此处。必须通过一个可能在一个月内不存在的投递箱链接并不酷。
  • 我怀疑您的问题与 labelheightlabelspacing 参数有关。
  • @tcaswell 但你为什么认为它在 1.2.1 中有效,而在 1.3.0 中无效?关于 Dropbox 链接的回答,我为 SO 的东西保留了一个专用文件夹,当问题需要太多代码时,我将开始使用 GitHub 的 Gist...
  • 在文本布局方面做了很多工作。我怀疑您在 1.2.1 中需要的设置是针对错误/不正确行为的解决方法。 xkcd.com/1172我真的认为你可以用
  • @tcaswell 好的,我会尝试在sscce 中重现该错误

标签: python python-2.7 matplotlib legend


【解决方案1】:

在 Matplotlib 1.3.0 中继续使用相同算法的解决方案很简单,只需在将图例标签传递给 plt.plot() 之前添加一个 strip() 调用:

label_from_txt_file = label_from_txt_file.strip()
plt.plot(range(2), line, label=label_from_txt_file)

它将删除'\n' 字符并避免行/文本错位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2015-08-19
    • 2016-05-16
    • 2021-10-31
    • 2019-03-21
    • 1970-01-01
    相关资源
    最近更新 更多