如何制作箱线图,使得数据框对象中的每一行都是图中的一个盒子?
我有一些股票数据想要用箱线图绘制。我的数据来自雅虎财经,包括每个交易日的开盘价、最高价、最低价、收盘价、调整后收盘价和成交量数据。我希望绘制一个箱线图,其中每个盒子代表一天的OHLC价格走势。
这将产生一个有4个方框的箱线图。每个方框都是每一列的范围,而不是行。例如,第一个方框“open”显示了整个“open”列的开盘价、收盘价、最高价和最低价。
但实际上,我想要的是每个“日期”(我的DataFrame的索引或行)有1个方框。因此,第一个方框将显示第一行“2010-01-10”的OHLC。第二个方框将是第二行(“2010-01-17”)。
不过,我真正想要的是原始每日数据(SP DataFrame)中的每一行都是其自己的OHLC Box。本质上,我想要每日蜡烛图,作为boxplot()生成。
我该如何使用Pandas DataFrame和Matplotlib boxplot()进行此操作?我只需要一个基本的箱线图,其中DataFrame中的每一行都是绘图中的OHLC框。此时没有什么花哨的东西。谢谢!
我有一些股票数据想要用箱线图绘制。我的数据来自雅虎财经,包括每个交易日的开盘价、最高价、最低价、收盘价、调整后收盘价和成交量数据。我希望绘制一个箱线图,其中每个盒子代表一天的OHLC价格走势。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas.io.data import DataReader
# get daily stock price data from yahoo finance for S&P500
SP = DataReader("^GSPC", "yahoo")
SP.head()
Open High Low Close Volume Adj Close
Date
2010-01-04 1116.56 1133.87 1116.56 1132.99 3991400000 1132.99
2010-01-05 1132.66 1136.63 1129.66 1136.52 2491020000 1136.52
2010-01-06 1135.71 1139.19 1133.95 1137.14 4972660000 1137.14
2010-01-07 1136.27 1142.46 1131.32 1141.69 5270680000 1141.69
2010-01-08 1140.52 1145.39 1136.22 1144.98 4389590000 1144.98
plt.figure()
bp = SP.boxplot()
但是当我把这个数据框绘制成箱线图时,我只得到一个箱子,其中包含整个Volume列的Open、High、Low和Close值。
同样地,我试图对我的已调整收盘价每日价格数据进行重新采样,以获取每周的OHLC:
close = SP['Adj Close']
wk = close.resample('W', how='ohlc')
wk.head()
open high low close
Date
2010-01-10 1132.99 1144.98 1132.99 1144.98
2010-01-17 1146.98 1148.46 1136.03 1136.03
2010-01-24 1150.23 1150.23 1091.76 1091.76
2010-01-31 1096.78 1097.50 1073.87 1073.87
2010-02-07 1089.19 1103.32 1063.11 1066.19
这将产生一个有4个方框的箱线图。每个方框都是每一列的范围,而不是行。例如,第一个方框“open”显示了整个“open”列的开盘价、收盘价、最高价和最低价。
但实际上,我想要的是每个“日期”(我的DataFrame的索引或行)有1个方框。因此,第一个方框将显示第一行“2010-01-10”的OHLC。第二个方框将是第二行(“2010-01-17”)。
不过,我真正想要的是原始每日数据(SP DataFrame)中的每一行都是其自己的OHLC Box。本质上,我想要每日蜡烛图,作为boxplot()生成。
Open High Low Close
Date
2010-01-04 1116.56 1133.87 1116.56 1132.99
我该如何使用Pandas DataFrame和Matplotlib boxplot()进行此操作?我只需要一个基本的箱线图,其中DataFrame中的每一行都是绘图中的OHLC框。此时没有什么花哨的东西。谢谢!
matplotlib.finance.candlestick
。请参考http://matplotlib.org/examples/pylab_examples/finance_demo.html?highlight=candlestick。 - Paul HSP.T
转换了数据,boxplot
方法也无法产生你想要的结果;4)你面临的真正挑战是如何将你的数据框转换为matplotlib.finance.candlestick
可以使用的格式。 - Paul H