如何制作一个箱形图,其中我的数据框对象中的每一行都是图中的一个方框?
我有一些股票数据,我想用箱形图绘制 . 我的数据来自雅虎财经,包括每个交易日的开盘价,最高价,最低价,收盘价,调整收盘价和成交量数据 . 我想绘制一个盒子图,其中每个盒子是OHLC价格行动的1天 .
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个盒子的Box Plot . 每个框是每列的范围,而不是行 . 例如,第一个Box“open”显示整个“open”列的Open,Close,High和Low .
但我真正想要的是每个“日期”(我的DataFrame的索引或行)的1个框 . 所以第一个Box将显示第一行的OHLC,'2010-01-10' . 第二个框将是第二行('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()执行此操作?我只想要一个基本的boxplot图,其中DataFrame中的每一行都是图中的OHLC框 . 在这一点上没什么好看的 . 谢谢!
1 回答
正如我在评论中所说,你真的不想要箱形图 . 相反,你应该制作一个烛台图表 . 这里有一些代码可以帮助您入门 .