python-3.x - 如何更改图例框中符号/文本的位置?
问题描述
我有一个带有单个图例条目的子图。我将图例放在图的底部并使用mode='expand'
;但是,单个图例条目放置在图例框的最左侧。据我了解,更改 kwargs 例如bbox_to_anchor
更改图例框参数,但不会更改其中的符号/文本的参数。以下是重现我的问题的示例。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10, 10, 21)
y = np.exp(x)
z = x **2
fig, axes = plt.subplots(nrows=1, ncols=2)
axes[0].plot(x, y, color='r', label='exponential')
axes[1].plot(x, z, color='b')
# handles, labels = axes[0].get_legend_handles_labels()
plt.subplots_adjust(bottom=0.125)
fig.legend(mode='expand', loc='lower center')
plt.show()
plt.close(fig)
此代码产生. 如何更改符号和文本的位置,使其在图例框中居中?
PS:我知道指数对于这个子图来说是一个不好的标签,因为它只描述了第一个子图。但是,这只是为了示例,以便我可以将其应用于我的实际用例。
解决方案
图例条目使用HPacker
对象放置。这不允许居中。行为是那些 HPacker 是“合理的”(类似于普通文字处理软件中的“合理”选项)。
一种解决方法是创建三个(或任何奇数个)图例条目,以便所需的条目位于中间。这将通过ncol
参数和使用“虚拟”条目(可能是透明的并且没有关联的标签)来完成。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10, 10, 21)
y = np.exp(x)
z = x **2
fig, axes = plt.subplots(nrows=1, ncols=2)
fig.subplots_adjust(bottom=0.125)
l1, = axes[0].plot(x, y, color='r', label='exponential')
axes[1].plot(x, z, color='b')
dummy = plt.Line2D([],[], alpha=0)
fig.legend(handles=[dummy, l1, dummy],
mode='expand', loc='lower center', ncol=3)
plt.show()
推荐阅读
- git - 在本地机器上为 github 添加了错误的 ssh 密钥 如何在 localmachine 上更正
- rust - 在构建期间将符号值传递给 Rust 编译器
- sql - 在 Redshift 中将 null 插入整数类型列
- typescript - 如何使用 DevExtreme ODataStore 提供 API 版本?
- reactjs - 无法在 React 应用程序的故事书中应用材料 ui 覆盖
- javascript - 如果文件已存在于multer中,如何防止文件保存
- javascript - 对象到字符串 Javascript
- r - 每年删除语料库中的单词
- soapui - 从响应中获取 access_token 并传入 Rest Service 的 Request Header
- jquery - HTMLCollection 长度返回 0