如何自定义 mplfinance.plot?
How can I customize mplfinance.plot?
我已经制作了一个 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()
现在我需要做同样的事情,但使用 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 处于第一阶段时提出的一个老问题,现在很多事情都发生了变化,这个问题已经过时了。
要隐藏坐标轴,请添加:
axisoff=True
首先你应该将你的包升级到最新版本,然后在你的代码中,你可以这样写:
mpf.plot(......, axisoff= 真)
根据我的经验,有时在使用“axisoff=True”时,使用 figscale 可以获得更好的结果。
最好的方法是使用 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
我已经制作了一个 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()
现在我需要做同样的事情,但使用 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 处于第一阶段时提出的一个老问题,现在很多事情都发生了变化,这个问题已经过时了。
要隐藏坐标轴,请添加:
axisoff=True
首先你应该将你的包升级到最新版本,然后在你的代码中,你可以这样写: mpf.plot(......, axisoff= 真) 根据我的经验,有时在使用“axisoff=True”时,使用 figscale 可以获得更好的结果。
最好的方法是使用 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