Open waemm opened 3 years ago
@waemm Warren, Thanks for expressing your appreciation, and thank you also for contributing your question.
I looked through the code and it appears that the alines
kwarg (and other ..lines
kwargs) are limited to the main panel.
As a work-around, I tried experimenting with returnfig=True
and then calling _construct_aline_collections()
directly, and passing the output into Axes.add_collection()
for one of the Axes returned from mpf.plot()
. In theory that should work; not sure why it did not initially work for me. When I have more time I will try debugging.
It is a reasonable enhancement request to allow alines
to work for any panel. If you are interested in making the change I will be happy to guide you through it.
All the best. --Daniel
Hello everyone!
I experience the same need to have alines on addplots. Is there any news on this as for now?
Thanks to an idea at linked workaround, I've came to working code:
import mplfinance as mpf
...
aplots = [
# create additional plot with `extra_value` column values and type `bar`
mpf.make_addplot(data['extra_value'], panel=1, type='bar'),
]
# generate axes for main and additional plots
figure, axlist = mpf.plot(data, type='candle', addplot=aplots, returnfig=True)
# construct a line with the same values as data's index
line_points = [('2022-06-11', 20), ('2022-08-12', -20)]
# generate aline collection
alines = mpf._utils._construct_aline_collections(dict(alines=line_points), data.index)
# finally add aline collection to additional plot's primary axe (index `2` is for primary axe of panel 1)
axlist[2].add_collection(alines)
mpf.show()
Still it will be nice feature to have to support lines natively for addplots.
@waemm Warren, Thanks for expressing your appreciation, and thank you also for contributing your question.
I looked through the code and it appears that the
alines
kwarg (and other..lines
kwargs) are limited to the main panel.As a work-around, I tried experimenting with
returnfig=True
and then calling_construct_aline_collections()
directly, and passing the output intoAxes.add_collection()
for one of the Axes returned frommpf.plot()
. In theory that should work; not sure why it did not initially work for me. When I have more time I will try debugging.It is a reasonable enhancement request to allow
alines
to work for any panel. If you are interested in making the change I will be happy to guide you through it.All the best. --Daniel
Hey @waemm @DanielGoldfarb @xt99 ,
I came up with a work-around solution for my charts - you can use the fill_between function for drawing the lines in whatever panel you want. So for RSI I want to (among other things) mark the 30 and 70 level with lines. I wrote these lines to make it happen:
mpf.make_addplot(df["RSI"], type="line",panel=2,ylabel="RSI",color="orange",fill_between=dict(y1=df["RSI"].min(),y2=df["RSI"].values,color="grey",alpha=0.5)),
mpf.make_addplot(df["RSI"], type="line",panel=2, ylabel="RSI",color="orange",fill_between=dict(y1=30,y2=30,color="red")),
mpf.make_addplot(df["RSI"], type="line",panel=2, ylabel="RSI",color="orange",fill_between=dict(y1=70,y2=70,color="red"))
So basically I'm creating a fill_between line with the same values which creates a simple line. This should work for whatever panel you'd like. My chart looks like this:
i think this issue can be closed due the hlines,vlines,lines,tlines kwargs added. see this notebook at master/examples/using_lines.ipynb
how can lines have different color when having many of them? I have like 200 lines and would like to group them by color?
any help is much appreciated...
Firstly, thank you so much for this tool! It has made my foray into financial algorithms a real joy! I am curious if there is a way to add the alines to other panels or addplots? I have RSI for instance that I would like to plot and mark up with some lines. The only way I can think of doing this at the moment is to create a second plot using the RSI value instead of the close ?
Thanks again! Warren