使用 Pandas 和 Matplotlib 绘制 Candlestick_OHLC 一分钟柱线图

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/41821916/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 02:51:18  来源:igfitidea点击:

Charting Candlestick_OHLC one minute bars with Pandas and Matplotlib

pythonpandasmatplotlib

提问by RaduS

Given the following example of Pandas dataframe

给出以下 Pandas 数据框示例

                    date    open    high     low   close    volume
0    2015-03-13 08:00:00  71.602  71.637  71.427  71.539  0.000249
1    2015-03-13 08:01:00  71.541  71.563  71.461  71.501  0.000215
2    2015-03-13 08:02:00  71.521  71.537  71.504  71.533  0.000048
3    2015-03-13 08:03:00  71.530  71.530  71.510  71.524  0.000016
4    2015-03-13 08:04:00  71.504  71.578  71.504  71.515  0.000045
5    2015-03-13 08:05:00  71.524  71.581  71.522  71.538  0.000062
6    2015-03-13 08:06:00  71.562  71.621  71.542  71.550  0.000095
7    2015-03-13 08:07:00  71.555  71.576  71.544  71.565  0.000051
8    2015-03-13 08:08:00  71.555  71.566  71.554  71.565  0.000023
9    2015-03-13 08:09:00  71.564  71.564  71.502  71.504  0.000017
10   2015-03-13 08:10:00  71.508  71.549  71.486  71.516  0.000097
11   2015-03-13 08:11:00  71.521  71.523  71.443  71.447  0.000103
12   2015-03-13 08:12:00  71.451  71.496  71.444  71.480  0.000206
13   2015-03-13 08:13:00  71.473  71.485  71.389  71.418  0.000147
14   2015-03-13 08:14:00  71.424  71.442  71.394  71.398  0.000107
15   2015-03-13 08:15:00  71.393  71.415  71.350  71.356  0.000141
16   2015-03-13 08:16:00  71.377  71.463  71.366  71.436  0.000142
17   2015-03-13 08:17:00  71.428  71.467  71.391  71.440  0.000091
18   2015-03-13 08:18:00  71.357  71.450  71.353  71.420  0.000147
19   2015-03-13 08:19:00  71.420  71.476  71.415  71.439  0.000062
20   2015-03-13 08:20:00  71.443  71.471  71.403  71.435  0.000196
21   2015-03-13 08:21:00  71.442  71.475  71.425  71.469  0.000032

How to plot one minute candlestick OHLC bars showing the minute timeframe on the xaxis?

如何绘制在 xaxis 上显示分钟时间范围的一分钟烛台 OHLC 条?

I tried this but it doesn't work

我试过这个,但它不起作用

df = df[['date', 'open', 'high', 'low', 'close', 'volume']]
df = df.reset_index()
f1 = plt.subplot2grid((6, 4), (1, 0), rowspan=6, colspan=4, axisbg='#07000d')
f1.xaxis.set_major_formatter(mdates.DateFormatter('%y-%m-%d %H:%M:%S'))
candlestick_ohlc(f1, df.values, width=.6, colorup='#53c156', colordown='#ff1717')
plt.ylabel('Stock Price')
plt.xlabel('Date Hours:Minutes')
plt.show()

回答by jezrael

Note: matplotlib.financewas taken out of mpl and moved into its own module. mplfinancecan now be found here.

注意:matplotlib.finance已从 mpl 中取出并移入其自己的模块中。 mplfinance现在可以在这里找到。

You need convert dates to mdates.date2num, because

您需要将日期转换为mdates.date2num,因为

time must be in float days format - see date2num

时间必须是浮点数格式 - 请参阅 date2num

Then I try implement this solution:

然后我尝试实施这个解决方案

import pandas as pd

import matplotlib.pyplot as plt
from matplotlib.finance import candlestick_ohlc
import matplotlib.dates as mdates

#if necessary convert to datetime
df.date = pd.to_datetime(df.date)

df = df[['date', 'open', 'high', 'low', 'close', 'volume']]
df["date"] = df["date"].apply(mdates.date2num)

f1 = plt.subplot2grid((6, 4), (1, 0), rowspan=6, colspan=4, axisbg='#07000d')
candlestick_ohlc(f1, df.values, width=.6, colorup='#53c156', colordown='#ff1717')
f1.xaxis_date()
f1.xaxis.set_major_formatter(mdates.DateFormatter('%y-%m-%d %H:%M:%S'))

plt.xticks(rotation=45)
plt.ylabel('Stock Price')
plt.xlabel('Date Hours:Minutes')
plt.show()

回答by priyansh vatsal

It's hack is to just simply reduce your candlestick width. Like for 15 min chart width=0.01

黑客只是简单地减少您的烛台宽度。喜欢 15 分钟图表宽度 = 0.01