0
点赞
收藏
分享

微信扫一扫

matplotlib 中 plt.tight_layout()


目录

​​1 问题​​

​​2 解决方法 ​​

​​3 案例 ​​

​​3.1 代码​​

​​3.2 结果 ​​

​​4 加上plt.tight_layout()后​​

​​4.1 代码​​

​​4.2 结果 ​​

1 问题

(1)在 matplotlib 中,轴域(包括子图)的位置以标准化图形坐标指定。 可能发生的是,你的轴标签或标题(有时甚至是刻度标签)会超出图形区域,因此被截断。

(2)当你拥有多个子图时,你会经常看到不同轴域的标签叠在一起。

2 解决方法 

#在plt.show()前加上:
plt.tight_layout()

3 案例 

3.1 代码

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib; matplotlib.use('TkAgg')
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
plt.rcParams['savefig.facecolor'] = "0.8"

def example_plot(ax, fontsize=12):
ax.plot([1, 2])
ax.locator_params(nbins=3)
ax.set_xlabel('x-label', fontsize=fontsize)
ax.set_ylabel('y-label', fontsize=fontsize)
ax.set_title('Title', fontsize=fontsize)

plt.close('all')
plt.close('all')
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2)
example_plot(ax1)
example_plot(ax2)
example_plot(ax3)
example_plot(ax4)
plt.show()

3.2 结果 

matplotlib 中 plt.tight_layout()_解决方法

4 加上plt.tight_layout()后

4.1 代码

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib; matplotlib.use('TkAgg')
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
plt.rcParams['savefig.facecolor'] = "0.8"

def example_plot(ax, fontsize=12):
ax.plot([1, 2])
ax.locator_params(nbins=3)
ax.set_xlabel('x-label', fontsize=fontsize)
ax.set_ylabel('y-label', fontsize=fontsize)
ax.set_title('Title', fontsize=fontsize)

plt.close('all')
plt.close('all')
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2)
example_plot(ax1)
example_plot(ax2)
example_plot(ax3)
example_plot(ax4)
plt.tight_layout()
plt.show()

4.2 结果 

matplotlib 中 plt.tight_layout()_解决方法_02

 

 

 

举报

相关推荐

0 条评论