python 子图只用一个x轴_python – matplotlib:使用SHARED X轴创建两个(堆叠)子图,但是分隔Y轴值...

在Ubuntu 10.0.4上使用matplotlib 1.2.x和Python 2.6.5,尝试创建一个烛台图和条形图的组合图表。X轴为日期时间序列,顶部图显示烛台图,底部图显示条形图,两图共享X轴但Y轴独立。遇到的问题包括:底部图覆盖了顶部图的底部部分,以及底部图的Y轴值不正确。寻求解决方案。
摘要由CSDN通过智能技术生成

我在Ubuntu 10.0.4上使用matplotlib 1.2.x和

Python 2.6.5.我正在尝试创建一个由顶部情节和底部情节组成的单一情节.

X轴是时间序列的日期.顶部图包含数据的烛台图,底部图应包含条形图 – 具有自己的Y轴(也在左侧 – 与顶部图相同).这两幅图不应超过.

这是迄今为止所做的一切.

datafile = r'/var/tmp/trz12.csv'

r = mlab.csv2rec(datafile, delimiter=',', names=('dt', 'op', 'hi', 'lo', 'cl', 'vol', 'oi'))

mask = (r["dt"] >= datetime.date(startdate)) & (r["dt"] <= datetime.date(enddate))

selected = r[mask]

plotdata = zip(date2num(selected['dt']), selected['op'], selected['cl'], selected['hi'], selected['lo'], selected['vol'], selected['oi'])

# Setup charting

mondays = WeekdayLocator(MONDAY) # major ticks on the mondays

alldays = DayLocator() # minor ticks on the days

weekFormatter = DateFormatter('%b %d') # Eg, Jan 12

dayFormatter = DateFormatter('%d') # Eg, 12

monthFormatter = DateFormatter('%b %y')

# every Nth month

months = MonthLocator(range(1,13), bymonthday=1, interval=1)

fig = pylab.figure()

fig.subplots_adjust(bottom=0.1)

ax = fig.add_subplot(111)

ax.xaxis.set_major_locator(months)#mondays

ax.xaxis.set_major_formatter(monthFormatter) #weekFormatter

ax.format_xdata = mdates.DateFormatter('%Y-%m-%d')

ax.format_ydata = price

ax.grid(True)

candlestick(ax, plotdata, width=0.5, colorup='g', colordown='r', alpha=0.85)

ax.xaxis_date()

ax.autoscale_view()

pylab.setp( pylab.gca().get_xticklabels(), rotation=45, horizontalalignment='right')

# Add volume data

# Note: the code below OVERWRITES the bottom part of the first plot

# it should be plotted UNDERNEATH the first plot - but somehow, that's not happening

fig.subplots_adjust(hspace=0.15)

ay = fig.add_subplot(212)

volumes = [ x[-2] for x in plotdata]

ay.bar(range(len(plotdata)), volumes, 0.05)

pylab.show()

我已经设法使用上面的代码显示了两个图,但是底部的情况有两个问题:

>它完全覆盖了第一(上)情节的底部 – 几乎就像第二个情节正在绘制与第一个情节相同的“画布” – 我看不到哪里/为什么发生.

>它用自己的指示OVERWRITES现有的X轴,X轴值(日期)应在两个曲线之间共享.

我在代码中做错了什么?有人会发现什么是导致第二(底部)情节覆盖第一(上)情节 – 我该如何解决这个问题?

以下是上面代码创建的情节截图:

[[编辑]]

在修改hwlau建议的代码之后,这是新的情节.比起这两个地块分开的情况要好一些,但是下列问题依然存在:

> X轴应该通过两个曲线进行共享(即X轴应该只显示在第二个[底部]图上)

>第二块的Y值似乎不正确地形成

我认为这些问题应该很容易解决,但是我的matplotlib fu目前还不是很好,因为我最近才开始用matplotlib编程.任何帮助将不胜感激.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值