matplotlib 如何定制mplfinance,阴谋?

2w3kk1z5  于 2023-05-01  发布在  其他
关注(0)|答案(4)|浏览(172)

我已经做了一个python脚本来转换一个csv文件在烛台像这样使用mpl_finance,这是脚本:

import matplotlib.pyplot as plt
from mpl_finance import candlestick_ohlc
import pandas as pd
import matplotlib.dates as mpl_dates

plt.style.use('ggplot')

# Extracting Data for plotting
data = pd.read_csv('CSV.csv')
ohlc = data.loc[:, ['Date', 'Open', 'High', 'Low', 'Close']]
ohlc['Date'] = pd.to_datetime(ohlc['Date'])
ohlc['Date'] = ohlc['Date'].apply(mpl_dates.date2num)
ohlc = ohlc.astype(float)

# Creating Subplots
fig, ax = plt.subplots()
plt.axis('off')
fig.patch.set_facecolor('black')

candlestick_ohlc(ax, ohlc.values, width=0.6, colorup='green', colordown='red', alpha=0.8)

plt.show()

现在我需要做同样的事情,但使用mplfinance而不是mpl_finance,我已经这样尝试了:

import mplfinance as mpf
# Load data file.
df = pd.read_csv('CSV.csv', index_col=0, parse_dates=True)

# Plot candlestick.
# Add volume.
# Add moving averages: 3,6,9.
# Save graph to *.png.
mpf.plot(df, type='candle', style='charles',
        title='',
        ylabel='',
        ylabel_lower='',
        volume=True, 
        mav=(3,6,9), 
        savefig='test-mplfiance.png')

我得到了这个结果:

所以,现在我需要改变背景颜色从白色到黑色,删除网格和删除轴,但我不知道如何做。感谢所有会花时间回复我的人。
[编辑]:这是我在mpl_finance处于第一阶段时提出的一个老问题,现在很多事情都改变了,这个问题已经过时了。

b1zrtrql

b1zrtrql1#

最好的方法是使用mpf.make_mpf_style()定义自己的样式,而不是使用默认的mpf样式。
如果在mplfinance中使用外部轴方法,则可以绘制多个图表,如下所示:

# add your own style by passing in kwargs    
s = mpf.make_mpf_style(base_mpf_style='charles', rc={'font.size': 6})
fig = mpf.figure(figsize=(10, 7), style=s) # pass in the self defined style to the whole canvas
ax = fig.add_subplot(2,1,1) # main candle stick chart subplot, you can also pass in the self defined style here only for this subplot
av = fig.add_subplot(2,1,2, sharex=ax)  # volume chart subplot
mpf.plot(price_data, type='candle', ax=ax, volume=av)

默认的mpf样式如下。我相信‘mike’和‘nighclouds’的背景都是暗的,不是100%确定别人,你可以选择在这两个上面工作。

In [5]:
mpf.available_styles()
Out[5]:
['binance',
 'blueskies',
 'brasil',
 'charles',
 'checkers',
 'classic',
 'default',
 'mike',
 'nightclouds',
 'sas',
 'starsandstripes',
 'yahoo']

Link to visualize the default mplfinance styles

可以在mpf.make_mpf_style()中传递的参数如下,您可以使用base_mpf_style, facecolor, gridcolor, gridstyle, gridaxis, rc自定义自己的样式,并使用style_name给予命名。你可以尝试一下这些论点,看看结果如何。

def _valid_make_mpf_style_kwargs():
    vkwargs = {
        'base_mpf_style': { 'Default'     : None,
                            'Validator'   : lambda value: value in _styles.keys() },

        'base_mpl_style': { 'Default'     : None,
                            'Validator'   : lambda value: isinstance(value,str) }, # and is in plt.style.available

        'marketcolors'  : { 'Default'     : None, # 
                            'Validator'   : lambda value: isinstance(value,dict)  },

        'mavcolors'     : { 'Default'     : None,
                            'Validator'   : lambda value: isinstance(value,list) },  # TODO: all([mcolors.is_color_like(v) for v in value.values()])

        'facecolor'     : { 'Default'     : None,
                            'Validator'   : lambda value: isinstance(value,str) },

        'edgecolor'     : { 'Default'     : None,
                            'Validator'   : lambda value: isinstance(value,str) },

        'figcolor'      : { 'Default'     : None,
                            'Validator'   : lambda value: isinstance(value,str) },

        'gridcolor'     : { 'Default'     : None,
                            'Validator'   : lambda value: isinstance(value,str) },

        'gridstyle'     : { 'Default'     : None,
                            'Validator'   : lambda value: isinstance(value,str) },

        'gridaxis'      : { 'Default'     : None,
                            'Validator'   : lambda value: value in [ 'vertical'[0:len(value)], 'horizontal'[0:len(value)], 'both'[0:len(value)] ] },

        'y_on_right'    : { 'Default'     : None,
                            'Validator'   : lambda value: isinstance(value,bool) },

        'rc'            : { 'Default'     : None,
                            'Validator'   : lambda value: isinstance(value,dict) },

        'style_name'    : { 'Default'     : None,
                            'Validator'   : lambda value: isinstance(value,str) },

    }
    _validate_vkwargs_dict(vkwargs)
    return vkwargs
b1uwtaje

b1uwtaje2#

要隐藏轴,请添加以下内容:

axisoff=True
disbfnqx

disbfnqx3#

首先你应该升级你的包到最新版本,然后在你的代码中,你可以这样写:mpf.plot(......,axisoff= True)根据我的经验,有时在使用“axisoff= True”时,使用figscale可以获得更好的结果。

brjng4g3

brjng4g34#

从来没有迟到一个更好的样式,我也不喜欢任何默认样式,所以我做了这个,我复制了从binance黑暗模式的颜色。

binance_dark = {
    "base_mpl_style": "dark_background",
    "marketcolors": {
        "candle": {"up": "#3dc985", "down": "#ef4f60"},  
        "edge": {"up": "#3dc985", "down": "#ef4f60"},  
        "wick": {"up": "#3dc985", "down": "#ef4f60"},  
        "ohlc": {"up": "green", "down": "red"},
        "volume": {"up": "#247252", "down": "#82333f"},  
        "vcedge": {"up": "green", "down": "red"},  
        "vcdopcod": False,
        "alpha": 1,
    },
    "mavcolors": ("#ad7739", "#a63ab2", "#62b8ba"),
    "facecolor": "#1b1f24",
    "gridcolor": "#2c2e31",
    "gridstyle": "--",
    "y_on_right": True,
    "rc": {
        "axes.grid": True,
        "axes.grid.axis": "y",
        "axes.edgecolor": "#474d56",
        "axes.titlecolor": "red",
        "figure.facecolor": "#161a1e",
        "figure.titlesize": "x-large",
        "figure.titleweight": "semibold",
    },
    "base_mpf_style": "binance-dark",
}

can = pd.read_csv("data1.csv", parse_dates=True, index_col=0)
# Plot the candlestick chart
mpf.plot(
    can,
    type="candle",
    style=binance_dark,
    title="BTCUSDT",
    ylabel="Price ($)",
    ylabel_lower="Volume",
    volume=True,
    mav=(2, 4, 6),
    update_width_config=dict(candle_linewidth=0.5, candle_width=0.5),
)

相关问题