I´m trying to create a simple plot with candlesticks. For that I get the data from Yahoo and plot it using the function candlestick2_ohlc. The goal is to export the image in a jpg file using.
This is the code what I´m using:
from pandas_datareader import data
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ohlc
import matplotlib.dates as mdates
import fix_yahoo_finance as yf
import datetime
start = datetime.date(2018, 1, 1)
end = datetime.date.today()
aapl = yf.download("AAPL",start,end)
aapl.reset_index(inplace=True)
aapl['Date'] = aapl.index.map(mdates.date2num)
fig, ax = plt.subplots()
plt.xlabel("Date")
plt.ylabel("Price")
candlestick2_ohlc(ax, aapl.Open, aapl.High, aapl.Low, aapl.Close, width=1, colorup='g')
plt.savefig('my_figure.png')
plt.show()
My first question is: there is another simple way to do it? Could you please give me an example to work with finance data? I usually work with quantmod in R.
The second question is: In my example, there is no Date in the X axi. What can I do to show the plot with Dates in the X axi? I should transform the Date into a AX format but I don't know a simple way to do it.
Thanks
We have to install mpl_finance. Example 2: Here, we define a dataset of stock prices that contains 5 parameters i.e open, close, high, low, and index (i.e date) and after that, we used pandas.to DateTime to convert the date, and then pandas. astype to convert all of the data to float ().
Just above and below the real body are the "shadows" or "wicks." The shadows show the high and low prices of that day's trading. If the upper shadow on a down candle is short, it indicates that the open that day was near the high of the day. A short upper shadow on an up day dictates that the close was near the high.
There are many ways of how plotting candlesticks in python using different package like:
You can also create your own specialized version of candlesticks using matplotlib
package.
You can install the package using the following command:
pip install mplfinance
Then, you should use it as the following:
DatetimeIndex
format.High
, Open
, Close
and Low
. (it's case-sensitive)Volume
named column is required.PS 1: You can create DatetimeIndex using pandas to_datetime
method.
PS 2: You can rename a column using rename
method on dataframe.
Sample:
import pandas as pd
import mplfinance as mpf
df = pd.read_csv("<dataframe-path>", index_col=0)
mpf.plot(df, type='candle', style='yahoo', volume=True)
First you need to install the plotly
package using:
pip install plotly
Then, you can plot the candle plots as easy as the following code:
import plotly.graph_objects as go
import pandas as pd
from datetime import datetime
df = pd.read_csv('your_file_address')
fig = go.Figure(data=[go.Candlestick(x=df['name_of_time_column'],
open=df['name_of_open_column'],
high=df['name_of_high_column'],
low=df['name_of_low_column'],
close=df['name_of_close_column'])])
fig.show()
You can install finplot package using the following command:
pip install finplot
then, it's really easy to build a candlestick plot.
Example:
import finplot as fplt
import pandas as pd
df = pd.read_csv("<data-path.csv>")
fplt.candlestick_ochl(df[['Open', 'Close', 'High', 'Low']])
fplt.show()
finplot has working dates:
import finplot as fplt
import yfinance
df = yfinance.download('AAPL')
fplt.candlestick_ochl(df[['Open', 'Close', 'High', 'Low']])
fplt.show()
Not only does it show your dates, but also has many improvements (too many to list here).
Disclaimer: I dislike matplotlib's and plotly's API's (and performance and lack of functionality), so created finplot. Already it has 9% of the mpl_finance's pypi stars, so check it!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With