Matplotlib / Mplfinance - 如何更改线条和条形的颜色
Matplotlib / Mplfinance - how to change colour of lines and bars
一直在使用 Mplfinance,它很棒。我一直在努力改变一些子图的颜色。
我成功地使用了 docs using the external axes method. And I have read the docs 中关于样式的 'mpf.make_addplot' 方法。但是,如何将样式应用于其中一个子批次,而不仅仅是整个情节?
我已经添加了我的代码和它生成的图表图像,该函数通过带有图表数据的道具传递。
我已将图像标记为 'A',其中有一条线我想更改其颜色,这是 df['counts'] 添加图,标记为 'Tweets'。还有标记为 'B' 的部分,我想更改条形的颜色,如果可能的话,根据它是正的还是负的,使它成为不同的颜色。
def makeCharts_CountsOHLC(self, props):
fig = props['fig']
df = props['df']
symbol = props['symbol']
start = props['min_date']
end = props['max_date']
# Configure the axes
ax1 = fig.add_subplot(5,1,(1,2))
ax2 = fig.add_subplot(5,1,3, sharex=ax1)
ax3 = fig.add_subplot(5,1,4, sharex=ax1)
ax4 = fig.add_subplot(5,1,5, sharex=ax1)
# Create add plots
aps = [
mpf.make_addplot(
df['count_s'],
ax=ax2,
ylabel='Tweets',
),
mpf.make_addplot(
df['sentiment'],
type='bar',
ax=ax3,
ylabel='Sentiment',
)]
ax1.tick_params(labelbottom=False)
ax2.tick_params(labelbottom=False)
ax3.tick_params(labelbottom=False)
# Functions to add a day to date and format dates
date_p1 = lambda x: dt.strftime(pd.to_datetime(x) + td(days=1), '%d %b %y')
fmt_date = lambda x: dt.strftime(pd.to_datetime(x), '%d %b %y')
title = f'{symbol} Price and Volume Traded from {fmt_date(start)} until {date_p1(end)}'
# Plot the chart
mpf.plot(
df,
type='candle',
ax = ax1,
volume = ax4,
addplot = aps,
xrotation = 0,
datetime_format = '%b %d',
axtitle = title,
ylabel = 'Price ($USD)',
tight_layout = True
)
# Format the prive of the y axis
mkfunc = lambda x, pos: '%1.1fM' % (x * 1e-6) if x >= 1e6 else '%1.1fK' % (x * 1e-3) if x >= 1e3 else '%1.1f' % x
mkformatter = matplotlib.ticker.FuncFormatter(mkfunc)
ax1.yaxis.set_major_formatter(mkformatter)
# Adjustments to plot and save
plt.subplots_adjust(hspace=0)
plt.savefig(fname=props['save_path'], dpi=self.cconf.get('RESOLUTION'))
plt.close('all')
fig.clear()
mpf.make_addplot()
有一个 kwarg color=
你应该帮忙。
作为一般规则,所有可用的 kwargs 都列在代码中:
一直在使用 Mplfinance,它很棒。我一直在努力改变一些子图的颜色。
我成功地使用了 docs using the external axes method. And I have read the docs 中关于样式的 'mpf.make_addplot' 方法。但是,如何将样式应用于其中一个子批次,而不仅仅是整个情节?
我已经添加了我的代码和它生成的图表图像,该函数通过带有图表数据的道具传递。
我已将图像标记为 'A',其中有一条线我想更改其颜色,这是 df['counts'] 添加图,标记为 'Tweets'。还有标记为 'B' 的部分,我想更改条形的颜色,如果可能的话,根据它是正的还是负的,使它成为不同的颜色。
def makeCharts_CountsOHLC(self, props):
fig = props['fig']
df = props['df']
symbol = props['symbol']
start = props['min_date']
end = props['max_date']
# Configure the axes
ax1 = fig.add_subplot(5,1,(1,2))
ax2 = fig.add_subplot(5,1,3, sharex=ax1)
ax3 = fig.add_subplot(5,1,4, sharex=ax1)
ax4 = fig.add_subplot(5,1,5, sharex=ax1)
# Create add plots
aps = [
mpf.make_addplot(
df['count_s'],
ax=ax2,
ylabel='Tweets',
),
mpf.make_addplot(
df['sentiment'],
type='bar',
ax=ax3,
ylabel='Sentiment',
)]
ax1.tick_params(labelbottom=False)
ax2.tick_params(labelbottom=False)
ax3.tick_params(labelbottom=False)
# Functions to add a day to date and format dates
date_p1 = lambda x: dt.strftime(pd.to_datetime(x) + td(days=1), '%d %b %y')
fmt_date = lambda x: dt.strftime(pd.to_datetime(x), '%d %b %y')
title = f'{symbol} Price and Volume Traded from {fmt_date(start)} until {date_p1(end)}'
# Plot the chart
mpf.plot(
df,
type='candle',
ax = ax1,
volume = ax4,
addplot = aps,
xrotation = 0,
datetime_format = '%b %d',
axtitle = title,
ylabel = 'Price ($USD)',
tight_layout = True
)
# Format the prive of the y axis
mkfunc = lambda x, pos: '%1.1fM' % (x * 1e-6) if x >= 1e6 else '%1.1fK' % (x * 1e-3) if x >= 1e3 else '%1.1f' % x
mkformatter = matplotlib.ticker.FuncFormatter(mkfunc)
ax1.yaxis.set_major_formatter(mkformatter)
# Adjustments to plot and save
plt.subplots_adjust(hspace=0)
plt.savefig(fname=props['save_path'], dpi=self.cconf.get('RESOLUTION'))
plt.close('all')
fig.clear()
mpf.make_addplot()
有一个 kwarg color=
你应该帮忙。
作为一般规则,所有可用的 kwargs 都列在代码中: