Skip to content Skip to sidebar Skip to footer

Charting Candlestick_ohlc One Minute Bars With Pandas And Matplotlib

Given the following example of Pandas dataframe date open high low close volume 0 2015-03-13 08:00:00 71.602 71.637 71.427 71.539 0.00024

Solution 1:

Note: matplotlib.finance was taken out of mpl and moved into its own module. mplfinance can now be found here.

You need convert dates to mdates.date2num, because

time must be in float days format - see 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()

Solution 2:

As an update to Jazrael's answer, mplfinance has a new API that handles the matplotlib work for you. Now you can just call:

import pandas as pd
  import mplfinance as mpf

  daily = pd.read_csv('examples/data/SP500_NOV2019_Hist.csv',index_col=0,parse_dates=True)
  daily.index.name = 'Date'

  mpf.plot(daily, type='candle')

You also don't have to worry about the date data type conversion mentioned by Jazrael.

enter image description here

Solution 3:

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

Post a Comment for "Charting Candlestick_ohlc One Minute Bars With Pandas And Matplotlib"