【问题标题】:Matplotlib plots legend on one machine but not the otherMatplotlib 在一台机器上绘制图例,但不在另一台机器上
【发布时间】:2016-02-23 22:10:28
【问题描述】:

我有一个 Python 脚本,它绘制了一个带有相应色块图例的电子能带结构,如图所示 here. 它在我的机器上运行良好,但是当我的同事试图在他的机器上使用相同的输入文件运行脚本时,matplotlib 正确绘制能带结构,但无法创建图例。他尝试在 Python 2 和 3 中运行并收到相同的错误:/usr/lib/pymodules/python2.7/matplotlib/axes.py:4747: UserWarning: No labelled objects found。在个别地块上使用 label='...' kwarg。

由于我们使用相同的输入文件/代码,我不知道为什么它可以在一台机器上运行,而在另一台机器上却不行。知道可能导致此问题的原因以及如何解决吗?非常感谢。

这是应该创建图例的代码部分。

    r_patch = mpatches.Patch(color='r', label='dxy')       

    b_patch = mpatches.Patch(color='b', label='dyz') 

    y_patch = mpatches.Patch(color='y', label='dz2') 

    g_patch = mpatches.Patch(color='g', label='dxz') 

    m_patch = mpatches.Patch(color='m', label='dx2-y2')

    plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=5, mode="expand", borderaxespad=0., handles=[r_patch, b_patch, y_patch,g_patch, m_patch])

【问题讨论】:

  • matplotlib的版本一样吗?
  • 还要检查两台机器之间matplotlibrc文件的差异
  • 尝试使用 python 2.7.13 和 matplotlib 1.5.3,使用 Tk 和 Qt4 后端。两者都正确绘制。您可能需要检查机器之间的版本和设置。

标签: python matplotlib


【解决方案1】:

我有同样的错误。 与 matplotlib 版本有关。

见下一页: Matplotlib Legend Guide basic examples

您可以尝试下一个更改吗?:

r_patch = mpatches.Patch(color='r')       

b_patch = mpatches.Patch(color='b') 

y_patch = mpatches.Patch(color='y') 

g_patch = mpatches.Patch(color='g') 

m_patch = mpatches.Patch(color='m')

plt.legend([r_patch, b_patch, y_patch,g_patch, m_patch],
           ['dxy','dyz','dz2','dzx','dx2-y2'],
           bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=5, mode="expand", borderaxespad=0.)

【讨论】:

    猜你喜欢
    • 2018-01-06
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多