我想绘制图像以及沿其两个轴的轨迹。我想要共享的轴(一条轨迹为x,另一条轨迹为y),各图之间没有空间,但图像的纵横比相等。我在Python 3.6中工作。
使用GridSpec(我也尝试过使用子图),可以完成第一部分:
但是,如果我在图像上施加相等的长宽比,则会得到
看来我不知道如何制作一个方形图像,周围没有空格。
这是我的代码的相关部分(我也有使用子图的版本):
h, w = plt.figaspect(1)
fig = plt.figure(figsize = (h, w))
grid = fig.add_gridspec(nrows = 2, ncols = 2,
hspace = 0, wspace = 0, width_ratios = [2, 1],
height_ratios = [1, 2])
ax = fig.add_subplot(grid[1,0])
ay = fig.add_subplot(grid[0,0], sharex = ax)
az = fig.add_subplot(grid[1,1], sharey = ax)
plt.setp(ay.get_xticklabels(), visible = False)
plt.setp(az.get_yticklabels(), visible = False)
# Add this for square image
ax.set_aspect('equal')
有什么帮助吗?
最佳答案
也许有一些巧妙的方法可以完全避免此问题,但是作为快速解决方案,您可以使用subplots_adjust
:
import matplotlib.pyplot as plt
h, w = plt.figaspect(1)
fig = plt.figure(figsize = (h, w))
grid = fig.add_gridspec(nrows = 2, ncols = 2,
hspace = 0, wspace = 0, width_ratios = [2, 1],
height_ratios = [1, 2])
ax = fig.add_subplot(grid[1,0])
ay = fig.add_subplot(grid[0,0], sharex = ax)
az = fig.add_subplot(grid[1,1], sharey = ax)
plt.setp(ay.get_xticklabels(), visible = False)
plt.setp(az.get_yticklabels(), visible = False)
# Add this for square image
ax.set_aspect('equal')
# Adjust subplots
plt.subplots_adjust(top=0.9)
尽管您希望稍微改变刻度线,但这给了我:
关于python - Matplotlib:仅一个子图具有相等的长宽比,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55145596/