python 由于figsize,x标签超出了我的图

g2ieeal7  于 2023-03-11  发布在  Python
关注(0)|答案(2)|浏览(185)

我用下面的代码构造一个简单的图:

import matplotlib.pyplot as plt

idl_t, idl_q = [[0, 20], [8, 24]], [[100, 100], [100, 100]]
dsc_t, dsc_q = [[8, 14], [12, 18]], [[100, 100], [5, 5]]
cha_t, cha_q = [[12, 18], [14, 20]], [[5, 5], [100, 100]]

plt.figure(figsize=(7, 3))
plt.plot(idl_t, idl_q, color="blue", lw=2)
plt.plot(dsc_t, dsc_q, color="red", lw=2)
plt.plot(cha_t, cha_q, color="green", lw=2)
plt.xlabel("Time (hour)")
plt.show()

但是,代码不知何故剪切了图中的x标签,如下所示:

我很确定这是因为改变了figsize,并且似乎它按比例分配了标签空间。请参见下面的正常figsize图:

我怎样才能为xlabel保留足够的空间来使用不同的figsize?它真的应该是这样的吗?因为它对我来说似乎是一个bug?

7gcisfzg

7gcisfzg1#

使用plt.tight_layout

plt.figure(figsize=(7, 3))
plt.plot(idl_t, idl_q, color="blue", lw=2)
plt.plot(dsc_t, dsc_q, color="red", lw=2)
plt.plot(cha_t, cha_q, color="green", lw=2)
plt.xlabel("Time (hour)")
plt.tight_layout()  # <- HERE
plt.show()

更新

正如@TrentonMcKinney建议的那样,您也可以将tight_layout=True作为plt.figure的参数传递

plt.figure(figsize=(7, 3), tight_layout=True)
iyfamqjs

iyfamqjs2#

使用constrained_layout。它比tight_layout更灵活(通常):

import matplotlib.pyplot as plt 

idl_t, idl_q = [[0, 20], [8, 24]], [[100, 100], [100, 100]]
dsc_t, dsc_q = [[8, 14], [12, 18]], [[100, 100], [5, 5]]
cha_t, cha_q = [[12, 18], [14, 20]], [[5, 5], [100, 100]]

fig, ax = plt.subplots(figsize=(7, 3), constrained_layout=True)
ax.plot(idl_t, idl_q, color="blue", lw=2)
ax.plot(dsc_t, dsc_q, color="red", lw=2)
ax.plot(cha_t, cha_q, color="green", lw=2)
ax.set_xlabel("Time (hour)")
plt.show()

相关问题