Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib:具有相等长宽比的子地块的水平间距_Python_Matplotlib_Plot - Fatal编程技术网

Python matplotlib:具有相等长宽比的子地块的水平间距

Python matplotlib:具有相等长宽比的子地块的水平间距,python,matplotlib,plot,Python,Matplotlib,Plot,我试图用三列pcolormesh绘图和一个用于所有绘图的组合色条绘制两行。到目前为止,它似乎奏效了。然而,我肯定我没有用最优雅的方式。。。 我唯一的问题是,我不能再减小水平间距了。以下行应将水平间距设置为零: fig.subplots_adjust(left=0.05, right=0.98, top=0.93, bottom=0.00, wspace=0, hspace=0.03) 但这并不适用于 ax.set_aspect('equal') 我附加了一个小代码段,创建了下图: 当事情按

我试图用三列pcolormesh绘图和一个用于所有绘图的组合色条绘制两行。到目前为止,它似乎奏效了。然而,我肯定我没有用最优雅的方式。。。 我唯一的问题是,我不能再减小水平间距了。以下行应将水平间距设置为零:

fig.subplots_adjust(left=0.05, right=0.98, top=0.93, bottom=0.00, wspace=0, hspace=0.03)
但这并不适用于

ax.set_aspect('equal')
我附加了一个小代码段,创建了下图:


当事情按照您的方式运行时,您为什么要使用ax.set_aspect('equal')?只需对其进行注释,然后使用图中的子图进行调整(左=0.05,右=0.98,上=0.93,下=0.00,wspace=0.05,hspace=0.05)即可获得间隔良好的绘图。理解他们为什么不携手并进是另一个我不清楚的问题yet@Bazingaa因为我需要绘图具有相等的纵横比。如果我删除
ax.set_aspect('equal')
绘图将变成矩形,这对于我正在绘图的数据类型来说是不可接受的。有一个约束太多,相等aspect优先于
wspace
。或者换句话说,
wspace
表示最小间距,而不是实际间距。也许你可以多描述一点你想让情节看起来怎么样?你想要窄一点的身材吗?您想在网格的左侧和右侧有更多的空白吗?您还可以使色条在高度上占用更少的空间,或者使用
ax.set_aspect('equal',adjustable=“datalim”)
@ImportanceOfBeingErnest我希望单个绘图为正方形,整个图形的宽度尽可能小。我基本上想要我现在拥有的图形,但在水平方向上没有空格
ax.set_aspect('equal',adjustable=“datalim”)
显示为保留空白,但围绕空白绘制轴。但是,我想在水平方向上去掉空白,因为它们对于我的应用程序来说基本上是浪费空间。那么
plt.figure(figsize=(5,4.8))
呢?
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

rows = 2
columns = 3

fig = plt.figure()
gs = gridspec.GridSpec(rows+1, columns)

lines = []

x = np.linspace(1,10,100)
y = x
X, Y = np.meshgrid(x,y)
Z = np.random.rand(100,100)

lines = []
for i in range(rows):
    lines.append([])
    for j in range(columns):
        ax = fig.add_subplot(gs[i, j])

        line = ax.pcolormesh(X, Y, Z, cmap=plt.cm.Reds)
        lines[i].append(line)

        ax.set_aspect('equal')

        for tick in ax.get_xticklabels():
            tick.set_rotation(45)

        if i!=rows-1:
            ax.set_xticklabels([])
        if j!=0:
            ax.set_yticklabels([])
        #title
        props = dict(boxstyle='round', facecolor='white', alpha=0.7)
        ax.text(0.05, 0.95, "plot (%i, %i)" % (i,j), transform=ax.transAxes, fontsize=5,
                verticalalignment='top', bbox=props)
        ax.tick_params(labelsize=7)

cb_ax = fig.add_subplot(gs[-1,:])
cb_ax.set_aspect(0.05)

cbar = fig.colorbar(lines[0][0], cax=cb_ax, orientation='horizontal')
cb_ax.tick_params(labelsize=7)

fig.subplots_adjust(left=0.05, right=0.98, top=0.93, bottom=0.00, wspace=0, hspace=0.03)
#fig.tight_layout()
fig.text(0.5, 0.2, "x axis", ha='center', va='center')
fig.text(0.5, 0.97, "overall title", ha='center', va='center')
fig.text(0.02, 0.5, "y axis", ha='center', va='center', rotation='vertical')
fig.text(0.5, 0.02, "quantity [unit]", ha='center', va='center',)
plt.savefig("test.png", dpi=600)