Финансовые Диаграммы / Графики в Ruby или Python

На Linux можно считать/proc/cpuinfo файл и считать ядра.

12
задан Eric the Red 6 July 2009 в 21:31
поделиться

6 ответов

You can use matplotlib and the the optional bottom parameter of matplotlib.pyplot.bar. You can then use line plot to indicate the opening and closing prices:

For example:

#!/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()

creates a plot like this:

enter image description here

Obviously, you'd want to package this up in a function that drew the plot using (open, close, min, max) tuples (and you probably wouldn't want to randomly assign your opening and closing prices).

17
ответ дан 2 December 2019 в 04:25
поделиться

You can use Pylab (matplotlib.finance) with Python. Here are some examples: http://matplotlib.sourceforge.net/examples/pylab_examples/plotfile_demo.html . There is some good material specifically on this problem in Beginning Python Visualization.

Update: I think you can use matplotlib.finance.candlestick for the Japanese candlestick effect.

8
ответ дан 2 December 2019 в 04:25
поделиться

Have you considered using R and the quantmod package? It likely provides exactly what you need.

4
ответ дан 2 December 2019 в 04:25
поделиться

Are you free to use JRuby instead of Ruby? That'd let you use JFreeChart, plus your code would still be in Ruby

1
ответ дан 2 December 2019 в 04:25
поделиться

Please look at the Open Flash Chart embedding for WHIFF http://aaron.oirt.rutgers.edu/myapp/docs/W1100_1600.openFlashCharts An example of a candle chart is right at the top. This would be especially good for embedding in web pages.

0
ответ дан 2 December 2019 в 04:25
поделиться

Open Flash Chart - хороший выбор, если вам нравится внешний вид примеров. Я перешел на библиотеку JavaScript / Canvas, например Flot для встроенных HTML-диаграмм, поскольку она более настраиваема и я получаю желаемый эффект без особого взлома ( http://itprolife.worona.eu/2009 /08/scatter-chart-library-moving-to-flot.html ).

0
ответ дан 2 December 2019 в 04:25
поделиться