python - 根据标题自动化 matplotlib 图形尺寸
问题描述
我有一组三个变量,我想为其计算一个箱线图。这三个变量共享相同的标题,并且有不同的 x 标签,我希望它们三个在同一个图中创建。
查看以下示例(使用假数据):
import numpy as np
import matplotlib.pyplot as plt
data = dict(var1=np.random.normal(0, 1, 1000), var2=np.random.normal(0, 2, 1000), var3=np.random.normal(1, 2, 1000))
var_title = 'Really really long overlapping title'
fig = plt.figure()
for i in range(len(data)):
plt.subplot(1, 3, i + 1)
plt.boxplot(data[data.keys()[i]])
plt.title(var_title)
plt.show()
现在,我想要的是在三个子图上只设置一个标题(因为标题相同),或者让 python 自动重新调整图形的尺寸,以便标题适合并且可以阅读。
我要求这样做是因为此图形创建是批处理过程的一部分,其中图形会自动保存并用于生成 PDF 文档,因此我不能一次参与更改图形尺寸。
解决方案
为了为多个子图创建标题,您可以使用Figure.suptitle而不是 fig.title 和格式字体大小,例如那里指定的。
所以你的代码看起来像:
import numpy as np
import matplotlib.pyplot as plt
data = dict(var1=np.random.normal(0, 1, 1000),
var2=np.random.normal(0, 2, 1000), var3=np.random.normal(1, 2, 1000))
var_title = 'Really really long overlapping title'
fig = plt.figure()
fig.suptitle(var_title)
for i in range(len(data)):
plt.subplot(1, 3, i + 1)
plt.boxplot(data[data.keys()[i]])
plt.show()
orbeckst也在这里回答了问题。
推荐阅读
- javascript - 如何安排每个季度的 api 调用?
- python - 无法从 LXML 获取标签
- python - 如何避免/消除表单字段上的完整性错误
- django - Django.session:如何确定 Django 用户会话的开始?
- laravel - 如何在雄辩的关系中显示具有至少一个属性的属性族?
- javascript - 如何将字符串数组从反应状态映射到选择框
- macos - Tomcat - 未正确关闭 - vjava.net.SocketException:错误的文件描述符 - macbook
- javascript - Javascript遍历类onmouseover
- javascript - 自动更改电子中的键盘输入
- angular - 从打字稿中的数组中过滤