在matplotlib中向烛台图表添加标签 [英] adding labels to candlestick chart in matplotlib

查看:121
本文介绍了在matplotlib中向烛台图表添加标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将一系列(由[1,2,0,....]列表组成)添加到我用matplotlib制作的烛台图表中,但无法弄清楚如何为每个图表包括这些标签图中的特定蜡烛.基本上,我想生成一张这样的图表:


(来源: linnsoft.com )

每个蜡烛上方或下方带有数字(我的信号序列)的标签. 我有什么办法可以达到目的?

不知道它是否有帮助,但是我的系列属于Pandas DataFrame类...

解决方案

以下是从- http://matplotlib.org/examples/pylab_examples/finance_demo.html

在下面的代码中特别注意ax.annotate方法调用.

from pylab import *
from matplotlib.dates import  DateFormatter, WeekdayLocator, HourLocator, \
     DayLocator, MONDAY
from matplotlib.finance import quotes_historical_yahoo, candlestick,\
     plot_day_summary, candlestick2

# (Year, month, day) tuples suffice as args for quotes_historical_yahoo
date1 = ( 2004, 2, 1)
date2 = ( 2004, 4, 12 )


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

quotes = quotes_historical_yahoo('INTC', date1, date2)
if len(quotes) == 0:
    raise SystemExit

fig = figure()
fig.subplots_adjust(bottom=0.2)
ax = fig.add_subplot(111)
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(weekFormatter)
#ax.xaxis.set_minor_formatter(dayFormatter)

#plot_day_summary(ax, quotes, ticksize=3)
candlestick(ax, quotes, width=0.6)

ax.xaxis_date()
ax.autoscale_view()
setp( gca().get_xticklabels(), rotation=45, horizontalalignment='right')

import datetime
dt = datetime.datetime(2004, 3, 8)

# Annotating a specific candle
ax.annotate('This is my special candle', xy=(dt, 24), xytext=(dt, 25),
            arrowprops=dict(facecolor='black', shrink=0.05),
           )

show()

如果运行此文件,结果图应显示:-

I'm trying to add a series (composed of a list of [1,2,0,....]) to a candlestick chart I produced with matplotlib, but cannot work out how to include those labels for each specific candle in the graph. Basically I'd like to produce a chart like this one:


(source: linnsoft.com)

with the labels with the numbers (my signal series) just over or below each candles. Is there any way I can reach that?

Don't know if it helps, but my series are of the pandas DataFrame kind...

解决方案

Here's an example derived from - http://matplotlib.org/examples/pylab_examples/finance_demo.html

Take special note of ax.annotate method call in the code below.

from pylab import *
from matplotlib.dates import  DateFormatter, WeekdayLocator, HourLocator, \
     DayLocator, MONDAY
from matplotlib.finance import quotes_historical_yahoo, candlestick,\
     plot_day_summary, candlestick2

# (Year, month, day) tuples suffice as args for quotes_historical_yahoo
date1 = ( 2004, 2, 1)
date2 = ( 2004, 4, 12 )


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

quotes = quotes_historical_yahoo('INTC', date1, date2)
if len(quotes) == 0:
    raise SystemExit

fig = figure()
fig.subplots_adjust(bottom=0.2)
ax = fig.add_subplot(111)
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(weekFormatter)
#ax.xaxis.set_minor_formatter(dayFormatter)

#plot_day_summary(ax, quotes, ticksize=3)
candlestick(ax, quotes, width=0.6)

ax.xaxis_date()
ax.autoscale_view()
setp( gca().get_xticklabels(), rotation=45, horizontalalignment='right')

import datetime
dt = datetime.datetime(2004, 3, 8)

# Annotating a specific candle
ax.annotate('This is my special candle', xy=(dt, 24), xytext=(dt, 25),
            arrowprops=dict(facecolor='black', shrink=0.05),
           )

show()

The resulting plot if you run this file, should show you:-

这篇关于在matplotlib中向烛台图表添加标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆