金融图表/在Ruby或Python图表(Financial Charts / Graphs in R

2019-06-25 04:35发布

什么是像Ruby或Python高级语言创建一个金融开放 - 高 - 低 - 关闭(OHLC)图表我最好的选择吗? 虽然似乎有很多的图形选项,我还没有看到这种类型的图表任何宝石或鸡蛋。

http://en.wikipedia.org/wiki/Open-high-low-close_chart (但我不需要移动平均线或布林)

JFreeChart的可以在Java中做到这一点,但我想使我的代码库小而简单越好。

谢谢!

Answer 1:

您可以使用matplotlib和可选bottom的参数matplotlib.pyplot.bar 。 然后,您可以用线plot来表示开盘价和收盘价:

例如:

#!/usr/bin/env python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import lines

import random


deltas = [4, 6, 13, 18, 15, 14, 10, 13, 9, 6, 15, 9, 6, 1, 1, 2, 4, 4, 4, 4, 10, 11, 16, 17, 12, 10, 12, 15, 17, 16, 11, 10, 9, 9, 7, 10, 7, 16, 8, 12, 10, 14, 10, 15, 15, 16, 12, 8, 15, 16]
bases = [46, 49, 45, 45, 44, 49, 51, 52, 56, 58, 53, 57, 62, 63, 68, 66, 65, 66, 63, 63, 62, 61, 61, 57, 61, 64, 63, 58, 56, 56, 56, 60, 59, 54, 57, 54, 54, 50, 53, 51, 48, 43, 42, 38, 37, 39, 44, 49, 47, 43]


def rand_pt(bases, deltas):
    return [random.randint(base, base + delta) for base, delta in zip(bases, deltas)]

# randomly assign opening and closing prices 
openings = rand_pt(bases, deltas)
closings = rand_pt(bases, deltas)

# First we draw the bars which show the high and low prices
# bottom holds the low price while deltas holds the difference 
# between high and low.
width = 0
ax = plt.axes()
rects1 = ax.bar(np.arange(50), deltas, width, color='r', bottom=bases)

# Now draw the ticks indicating the opening and closing price
for opening, closing, bar in zip(openings, closings, rects1):
    x, w = bar.get_x(), 0.2

    args = {
    }

    ax.plot((x - w, x), (opening, opening), **args)
    ax.plot((x, x + w), (closing, closing), **args)


plt.show()

创建这样一个情节:

很显然,你会想,提请使用情节的功能打包这件事(open, close, min, max)元组(你可能不希望随机地分配你的开盘价和收盘价)。



Answer 2:

您可以使用Pylab( matplotlib.finance与Python)。 下面是一些例子: http://matplotlib.sourceforge.net/examples/pylab_examples/plotfile_demo.html 。 有对这个问题特别一些好的材料年初Python的可视化 。

更新:我想你可以使用matplotlib.finance.candlestick为日本烛台效果。



Answer 3:

你有没有考虑使用R和quantmod包? 它可能提供正是你需要的。



Answer 4:

使用matplotlib关于金融地块的一些例子(OHLC)可以在这里找到:

  • 金融演示

     #!/usr/bin/env python 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') show() 

  • 财务工作2


Answer 5:

您可以自由使用JRuby的,而不是红宝石? 这会让你使用JFreeChart的,再加上你的代码仍然是用Ruby



Answer 6:

请看打开Flash图表嵌入了味儿http://aaron.oirt.rutgers.edu/myapp/docs/W1100_1600.openFlashCharts蜡烛图的一个例子是位于首位。 这将是在网页中嵌入特别好。



Answer 7:

打开Flash图表是不错的选择,如果你喜欢的例子看。 我搬到的JavaScript /帆布库像海军报的HTML嵌入图表,因为它是更加个性化,我得到预期的效果没有太多的黑客( http://itprolife.worona.eu/2009/08/scatter-chart-library-移动到flot.html )。



Answer 8:

这是我画几天前使用Matplotlib的股票图表,我已经发布了源太,供大家参考: StockChart_Matplotlib



文章来源: Financial Charts / Graphs in Ruby or Python