Построение биржевой диаграммы с пандами в IPython - PullRequest
3 голосов
/ 14 февраля 2012

Я только начинаю работать с Python / Pandas и собираю следующий код для построения графика S & P 500.

from pandas.io.data import DataReader
# returns a DataFrame
sp500 = DataReader("^GSPC", "yahoo", start=datetime.datetime(1990, 1, 1))
sp500.plot(figsize = (12,8))

Похоже, что это построение максимума, минимума, открытия, закрытия, прилеганиязакрыть, и объем все на одном графике.Есть ли простой способ нанести на график только прилежное закрытие и объем прямо под ним , как это делается на Yahoo и большинстве других финансовых сайтов?Мне также был бы интересен пример построения графика свечи OHLC.

Ответы [ 2 ]

3 голосов
/ 15 февраля 2012

См. здесь для моего ответа на аналогичный вопрос и здесь для получения дополнительной информации о графике подсвечников в финансах mathplotlib.

Чтобы получить только ближайший ответ от вашего sp500, вы бы использовали что-то вроде sp500["Adj Close"], а затем передали это соответствующей команде сюжета matplotlib plt.plot(datelist, sp500["Adj Close"] ), где datelist - ваш список дат на оси x.

Я полагаю, что вы можете получить список дат, сославшись на sp500.index, см. здесь для получения дополнительной информации.

Что касается вашей проблемы с передачей ее команде plot, что-то вроде

datelist = [date2num(x) for x in sp500.index], где функция date2num из пакета matplotlib.dates.

После настройкисоответствующий участок, а затем вызовите соответствующую команду заполнения, чтобы fill_between_alpha область под линией, как график Yahoo, с которым вы связались.

См. здесь под заголовком Fill Between и Alpha для другого фрагмента, который показывает заполненный линейный график, с правильной печатью даты.

Initialссылка содержит образец фрагмента matplotlib, который также более подробно описывает формат даты и форматирование.

0 голосов
/ 13 декабря 2013

Это дает вам график только столбца Adj Close против индекса вашего DataFrame (Date).

from pandas.io.data import DataReader
sp500 = DataReader("^GSPC", "yahoo", start=datetime.datetime(1990, 1, 1)) 
close = sp500['Adj Close']
close.plot()
plt.show()

Аналогично, Вы можете построить Объем таким же образом:

vol = sp500['Volume']
vol.plot()
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...