首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python/matplotlib -指定寄生虫轴长度

python/matplotlib -指定寄生虫轴长度
EN

Stack Overflow用户
提问于 2012-09-17 19:34:55
回答 1查看 836关注 0票数 2

我正在从几个来源绘制数据,并需要多轴,最好是抵消,如那些在链接中看到的。我非常希望我的x轴有可变的长度,允许我在相同的图形上放很多个图。我到目前为止所做的是:

代码语言:javascript
复制
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
host = host_subplot(111, axes_class=AA.Axes,yscale='log')
plt.subplots_adjust(bottom=0.25)

par1 = host.twiny()

offset = 60

new_fixed_axis = par1.get_grid_helper().new_fixed_axis
par1.axis['bottom'] = new_fixed_axis(loc='bottom',
                                     axes=par1,
                                     offset=(0, -60))

host.set_xlim(200, 350)
host.set_ylim(1050, 100)
par1.set_xlim(0, 1)

host.set_xlabel('Temperature (K)')
host.set_ylabel('Pressure (hPa)')
par1.set_xlabel('Relative Humidity (%)')

p1, = host.plot(T,P)
p2, = host.plot(pT,P)
p2, = par1.plot(RH,P)

因此,我让轴向下下降,但在我的生命中,我想不出如何使轴实际水平压缩(例如,上面链接的图形中的蓝色轴)。

我的问题是,如何做到这一点(如果有的话)?

@Oz123

以下是我所拥有的:

代码语言:javascript
复制
host = host_subplot(111, axes_class=AA.Axes,yscale='log')
plt.subplots_adjust(bottom=0.25)

par1 = host.twiny()

new_fixed_axis = par1.get_grid_helper().new_fixed_axis

cax1 = plt.axes(axisbg='none',frameon=False)
cax1 = plt.add_axes(plt.get_position(), frameon=False)
par1.axis['bottom'] = new_fixed_axis(loc='bottom',
                                     axes=cax1,
                                     offset=(0, -60))

当我到达:

代码语言:javascript
复制
cax1 = plt.add_axes(plt.get_position(), frameon=False)

我以前的x/y轴消失了,只剩下一个只有cax1的灰色屏幕。

我很抱歉,我只是在收集资料,所以恐怕我在这里还是个新手。

EN

回答 1

Stack Overflow用户

发布于 2012-09-18 09:01:56

您正在使用主要的par1.axis['bottom']对象创建ax,因此您实际上所能做的事情非常有限。

相反,您应该创建2个或更多axes实例。并将它们放在数字实例中。

添加新的轴实例

cax1 = plt.axes(axisbg='none',frameon=False)

就像这样,你可以很好地控制你的湿度秤的大小。

以下一行:

代码语言:javascript
复制
par1.axis['bottom'] = new_fixed_axis(loc='bottom',
                                     axes=par1,
                                     offset=(0, -60))

例如:

代码语言:javascript
复制
par1.axis['bottom'] = new_fixed_axis(loc='bottom',
                                     axes=cax1, # custom axis number 1
                                     offset=(0, -60))

注意,使用IPython,您可以快速找到哪些方法可用于控制新创建的axes实例。

代码语言:javascript
复制
In [38]: cax1.set_ #tab pressed
cax1.set_adjustable            cax1.set_axis_bgcolor          cax1.set_frame_on              cax1.set_subplotspec           cax1.set_xticks
cax1.set_agg_filter            cax1.set_axis_off              cax1.set_gid                   cax1.set_title                 cax1.set_ybound
cax1.set_alpha                 cax1.set_axis_on               
# many more options trimmed, but I think you might want to take a look in:

控制新创建实例的位置:

代码语言:javascript
复制
In [38]: cax1.set_position?
Type:       instancemethod
String Form:<bound method AxesSubplot.set_position of <matplotlib.axes.AxesSubplot object at 0x2d7fb90>>
File:       /usr/lib/pymodules/python2.7/matplotlib/axes.py
Definition: cax1.set_position(self, pos, which='both')
Docstring:
Set the axes position with::

  pos = [left, bottom, width, height]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12465975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档