matplotlib - 在 matplotlib 中获取图例的宽度

标签 matplotlib

我曾经使用以下方法来获取图形坐标中图例的宽度:

fig = plt.figure()
ax = fig.add_axes((0.1, 0.1, 0.8, 0.8))
ax.scatter(xdata, ydata)
legend = ax.legend(loc="lower left", borderaxespad=0)
legend_width = legend.get_window_extent().inverse_transformed(fig.transFigure).width

我最近将 matplotlib 更新到版本 1.5.1。转换前宽度(和高度)始终为 1.0,转换后它们是非常小的值(宽度=0.0015625,高度=0.0020833),在图形坐标中没有意义。

现在有不同的方法来获取图例宽度吗?或者这是一个错误?

谢谢!

最佳答案

您正在受到性能优化的影响。我们现在尽可能推迟实际渲染图形。在大多数交互式情况下,这意味着延迟渲染,直到 GUI 框架第一次重新绘制为止。图例的确切大小是在绘制时计算出来的,因此当您询问窗口范围时,您将得到占位符值。

要解决此问题,您可以通过以下方式强制渲染

fig.canvas.draw()

一般来说,您不想使用get_window_extent。它依赖于 DPI,可能会导致一些非常奇怪且难以追踪的错误。返回的值取决于内部细节,这些细节不一定是面向用户的,一旦您将输出保存在某个地方,您就可以(将)不同步。

关于matplotlib - 在 matplotlib 中获取图例的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36988884/

相关文章:

python - 如何为使用 ImageGrid 创建的整个图形创建单轴标签

matplotlib - 使用比数据点更少的标记进行绘图(或绘制 CDF 的更好方法?)[matplotlib,或一般绘图帮助]

python - 如何在 python 中根据索引绘制图形

Python Matplotlib 多色图例入门

python - 获取 Jupyter notebook 实时显示 matplotlib 图形

python - 在 matplotlib 中向 x y 轴添加偏移量

python - 在 Python Dash 中显示 matplotlib 和 seaborn 图表不起作用。我们怎样才能让它发挥作用呢?

python - 序列索引图 python

python - 对数二维 - 使用 matplotlib 的直方图

python - 当 wxPython 面板中加载新图像时,Matplotlib 矩形选择器消失