Matplotlib在使用多个轴时保持纵横比

2024-09-30 12:25:22 发布

您现在位置:Python中文网/ 问答频道 /正文

使用两个x轴时,如何保持绘图的纵横比?下面的代码可以很好地显示宽高比为25/111的图像。在

import numpy as np
import matplotlib.pyplot as plt

data = np.ones((25, 111))
specFig, specAx = plt.subplots()
specAx.set_xlim([0, data.shape[1]])

#newax = specAx.twiny()
#newax.set_xlim([0, data.shape[1]])

specAx.imshow(data, origin="lower")
plt.show()

然而,当取消注释这些线时,它将变成一个相当二次的图像,其第二个x轴显示的值是0到111,而第一个x轴只显示大约25个值的剪辑。在


Tags: 代码图像importnumpy绘图datamatplotlibas
1条回答
网友
1楼 · 发布于 2024-09-30 12:25:22

奇怪的是,我不能用axis('tight')axis('scaled'),等等,specAx.set_aspect(aspect, adjustable='box'),关闭autoscale或任何东西,使轴看起来正确。我在matplotlib中也遇到过类似的双轴问题,作为一种解决方法,使用matplotlib的^{},对于您的情况是

import numpy as np
import matplotlib.pyplot as plt

from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA

data = np.ones((25, 111))

specFig = plt.figure()
specAx = host_subplot(111, axes_class=AA.Axes)

specAx.set_xlim([0, data.shape[1]])
specAx.imshow(data, origin="lower")

#Add parasite axis
newax = specAx.get_grid_helper().new_fixed_axis
specAx.axis["top"] = newax(loc="top", axes=specAx)

plt.show()

编辑:如果需要调整上轴,以前的解决方案可能不理想(上轴不是轴对象)。我已经成功地使用box forced关键字设置纵横比,如下所示:

^{pr2}$

然后您应该能够调整刻度等

相关问题 更多 >

    热门问题