matplotlib 为什么x轴和y轴的尺寸不一样?

niknxzdl  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(126)

所以我尝试生成一个4x 4的图形左下角是一个完美的正方形。

fig=plt.figure()
ax=np.empty((2,2,),dtype=object)
ax[1][0]=fig.add_subplot(2,2,3)
ax[0][0]=fig.add_subplot(2,2,1,sharex=ax[1][0])
ax[1][1]=fig.add_subplot(2,2,4,sharey=ax[1][0])
ax[0][1]=fig.add_subplot(2,2,2,sharex=ax[1][1],sharey=ax[0][0])
plt.subplots_adjust(hspace=0,wspace=0)
old_position,old_position2,old_position3,old_position4=list(ax[0][0].get_position().bounds),list(ax[1][1].get_position().bounds),list(ax[1][0].get_position().bounds),list(ax[0][1].get_position().bounds)
old_position[-1]=old_position[-1]/2
old_position2[-2]=old_position2[-2]/2
old_position3[-1]=old_position3[-2]
old_position4[-1]=old_position4[-1]/2
old_position4[-2]=old_position4[-2]/2
ax[0][0].set_position(old_position)
ax[1][1].set_position(old_position2)
ax[1][0].set_position(old_position3)
ax[0][1].set_position(old_position4)
ax[0][0].xaxis.set_visible(False)
ax[0][1].xaxis.set_visible(False)
ax[1][1].yaxis.set_visible(False)
ax[0][1].yaxis.set_visible(False)
#plot stuff onto axes objects
plt.suptitle('Test')
plt.show()

所以这意味着左下角的图([1][0])应该是一个完美的正方形,因为old_position3[-1]=[-2],实际上看old_position 3,你得到[0.125, 0.10999999999999999, 0.38749999999999996, 0.38749999999999996],所以x,y维度都是相同的0.3874
然而,在绘图/显示时,这些尺寸并不适合左下角。高/宽的比例约为3/5英寸,我不太明白为什么。此外,为什么标题(suptitle)使用旧尺寸(它位于上方)。

vuktfyat

vuktfyat1#

要得到一个左下角的正方形图形,只需在创建时提供一个正方形figsize

fig = plt.figure(figsize=(10, 10))

默认的figsize为6.4 x 4.8(source)。
因此,标题不会居中,因为您更改了坐标轴而没有更改图形大小。更多信息here

相关问题