如何在Matplotlib中扩展图形底部的边距?

x33g5p2x  于 2022-11-15  发布在  其他
关注(0)|答案(6)|浏览(130)

下面的屏幕截图显示了我的x轴。

我添加了一些标签,并将它们旋转了90度,以便更好地阅读它们。但是,pyplot截断了底部,因此我无法完全阅读标签。如何扩展底部边距以查看完整的标签?

khbbv19g

khbbv19g1#

fig.savefig('name.png', bbox_inches='tight')

最适合我,因为与

fig.tight_layout()
dy2hfwbg

dy2hfwbg2#

子图调整对我来说不起作用,因为整个图形将只是调整大小与标签仍然超出界限。
我发现的一个解决方法是使y轴始终与最大或最小y值保持一定的余量:

x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,y1 - 100 ,y2 + 100))
xeufq47z

xeufq47z3#

fig, ax = plt.subplots(tight_layout=True)
rggaifut

rggaifut4#

这是相当复杂的,但它给出了一个通用的简洁的解决方案。

import numpy as np
value1 = 3

xvalues = [0, 1, 2, 3, 4]
line1 = [2.0, 3.0, 2.0, 5.0, 4.0]
stdev1 = [0.1, 0.2, 0.1, 0.4, 0.3]

line2 = [1.7, 3.1, 2.5, 4.8, 4.2]
stdev2 = [0.12, 0.18, 0.12, 0.3, 0.35]

max_times = [max(line1+stdev1),max(line2+stdev2)]
min_times = [min(line1+stdev1),min(line2+stdev2)]

font_size = 25

max_total = max(max_times)
min_total = min(min_times)

max_minus_min = max_total - min_total

step_size = max_minus_min/10
head_space = (step_size*3) 

plt.figure(figsize=(15, 15))
plt.errorbar(xvalues, line1, yerr=stdev1, fmt='', color='b')

plt.errorbar(xvalues, line2, yerr=stdev2, fmt='', color='r')
plt.xlabel("xvalues", fontsize=font_size)
plt.ylabel("lines 1 and 2 Test "+str(value1), fontsize=font_size)
plt.title("Let's leave space for the legend Experiment"+ str(value1), fontsize=font_size)
plt.legend(("Line1", "Line2"), loc="upper left", fontsize=font_size)
plt.tick_params(labelsize=font_size)
plt.yticks(np.arange(min_total, max_total+head_space, step=step_size) )
plt.grid()
plt.tight_layout()

结果:

5q4ezhmt

5q4ezhmt5#

两种追溯方式:

fig, ax = plt.subplots()
# ...
fig.tight_layout()

或者

fig.subplots_adjust(bottom=0.2) # or whatever

下面是一个subplots_adjust示例:http://matplotlib.org/examples/pylab_examples/subplots_adjust.html
(but我更喜欢tight_layout

332nm8kg

332nm8kg6#

一个对我有效的快速单行解决方案是直接使用pyplot的auto tight_layout方法,该方法在Matplotlib v1.1以后的版本中可用:

plt.tight_layout()

这可以在显示图(plt.show())* 之前 * 立即调用,但在轴上进行操作(例如ticklabel旋转等)* 之后 * 调用。
这种方便的方法避免了操纵子区的单个图形。
其中plt是标准pyplot,来自:import matplotlib.pyplot as plt

相关问题