matplotlib 移动子图的边距

rbl8hiat  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(177)

我想把所有的子图向右移动一点,这样x轴上的零点之前就有更多的空间。margins会导致对称的间距。我该怎么做呢?
以下是MWE:

import matplotlib.pyplot as plt
x = [0, 1, 2, 3]
y = [1, 3, 4, 2]
fig, ax = plt.subplots(2,sharex=True)
ax[0].plot(x, y)
ax[1].plot(x, y)
ax[0].margins(0.3)
ax[1].margins(0.3)
plt.show()
fhity93d

fhity93d1#

当你说更多的空间,你是指更多的空间在图本身或图和边界之间?
如果你的意思是在绘图本身,你可以只手动设置x轴(虽然我不知道这是否正是你想要的。

import matplotlib.pyplot as plt

x = [0, 1, 2, 3]
y = [1, 3, 4, 2]

fig, ax = plt.subplots(2,sharex=True)

ax[0].plot(x, y)
ax[1].plot(x, y)
ax[0].set_xlim(-4,6) #however much space you want
ax[0].set_xticks([0,1,2,3])
plt.show()

由于您正在设置sharex=True,因此不需要为ax[1]指定。
此外,如果您有更大范围的数据点,并希望更容易地设置xtick,您可以执行以下操作:

import numpy as np

#linspace(start,end,num_steps)
set_xticks(np.linspace(0,3,4))
yws3nbqq

yws3nbqq2#

margins方法改变了the padding on the limit of your axes by scaling。如果你想为你的极限值指定一个特定的值,这个值将给予你正确的不对称程度,你可以使用(例如)

ax[0].set_xlim(-0.99, 3.2)

相关问题