1

我不知道是否可以使用 Matplotlib 或 seaborn 或其他工具在一个图中绘制 1 条线和 1 条(烛台样式)。如下图(在 excel 中):

x轴和y轴相同

在此处输入图像描述

按照下面的回复,我选择 mplfinance :mplfinance

我有以下数据框(每天)

在此处输入图像描述 并使用以下功能,我们可以绘制:

def ploting_chart(daily):
    # Take marketcolors from 'yahoo'
    mc = mpf.make_marketcolors(base_mpf_style='yahoo',up='#ff3300',down='#009900',inherit=True)

    # Create a style based on `seaborn` using those market colors:
    s  = mpf.make_mpf_style(base_mpl_style='seaborn',marketcolors=mc,y_on_right=True,
    gridstyle = 'solid' , mavcolors = ['#4d79ff','#d24dff']
    )

    # **kwargs
    kwargs = dict(
        type='candle',mav=(7,15),volume=True, figratio=(11,8),figscale=2,
        title = 'Covid-19 Madagascar en traitement',ylabel = 'Total en traitement',
        update_width_config=dict(candle_linewidth=0.5,candle_width=0.5),
        ylabel_lower = 'Total'
        )

    # Plot my new custom mpf style:
    mpf.plot(daily,**kwargs,style=s,scale_width_adjustment=dict(volume=0.4))

我得到最终结果

在此处输入图像描述

4

2 回答 2

1

是的,plt.figureorplt.subplots给你一个图形对象,然后你可以绘制任意数量的图形。事实上,如果你使用

import seaborn as sns
fmri = sns.load_dataset("fmri")

f,ax = plt.subplots(1,1,figsize=(10,7)) # make a subplot of 1 row and 1 column


g1 = sns.lineplot(x="timepoint", y="signal", data=fmri,ax=ax) # ax=axis object is must
g2 = sns.some_other_chart(your_data, ax=ax)
g3 = ax.some_matlotlib_chart(your_data) # no need to use ax=ax

Seaborn不支持,但您可以在同一轴上Candlestick使用 绘制。matplotlib

from matplotlib.finance import candlestick_ohlc
candlestick_ohlc(ax, data.values, width=0.6, colorup='g', colordown='r') # just a dummy code to explain. YOu can see the ax object here as first arg

您甚至可以使用 pandasdf.plot(data,kind='bar',ax=ax,**kwargs)在同一个轴对象内绘图。

注意:某些seaborn图表不支持在同一图表上绘图,ax因为它们使用自己的grid,例如relplot

于 2020-07-02T03:11:26.223 回答
0

是的,mplfinance允许您在同一个图或多个子图上绘制多个数据集,其中每个子图可以是烛台、ohlc-bars、折线图、散点图或条形图中的任何一种。

有关更多信息,请参见例如:

请注意,作为一般规则,如果您尝试完成的任务可以通过面板模式下的 mplfinance来完成,建议不要使用“外部轴方法”。

于 2020-12-21T12:47:20.280 回答