python - 如何自定义 mplfinance.plot?

标签 python matplotlib finance candlestick-chart mplfinance

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

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()
enter image description here

现在我需要做同样的事情,但使用 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')
我有这个结果:
enter image description here

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

最佳答案

最好的方法是使用 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
enter image description herempf.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

关于python - 如何自定义 mplfinance.plot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60599812/

相关文章:

Python - 代码片段不适用于 Python 2.5.6,使用 IDLE

python - Populate() 不是可重入的 Django Google App Engine

python - 高斯过程预测置信区间奇数

python - 频谱图 - 美白特定区域

c# - 无法弄清楚如何使用以下方法计算非复合税和混合税?

Python 命令行脚本 : file/directory autocompletion on user input

python - 更改 matplotlib Qt GUI savefig 的默认名称

python - 为什么列表中的第一个图没有绘制,但最后却有一个空图?

programming-languages - 量化金融研究语言

php - 将公式保存在数据库中并在运行时替换值 php