matplotlib finance 未正确绘制 window
matplot finance not plotting window properly
我正在使用 matplotlib finance (mpfinance),目前遇到奇怪的间歇性绘图问题。 (堆栈溢出中没有它的标记,因此正确标记它具有挑战性:https://github.com/matplotlib/mplfinance)
我让这段代码在今晚早些时候运行并显示了 2 个正确的 y labels/axis,除了一些语法清理之外,代码中相对没有什么重要的改变。
在 AAPL 的附带图片中,似乎次要 y 轴试图绘制,但是,它显示为总体积的百分比,而不是它自己的带有百分比的 y 轴。
评论应该解释思维过程。
import mplfinance as mpf
# AAPL call volume %
# Selecting specifics mentioning AAPL
AAPL_df = naster_df[master_df['ticker'] == 'AAPL'][[
'ticker', 'date', 'call_volume', 'put_volume',
'call_ratio', 'put_ratio', 'open', 'low',
'high', 'close','volume']]
# MPF requires DateTimeIndex for plotting
AAPL_df = AAPL_df.set_index('date')
# Dropping NA's, Not sure if needed so commented out
AAPL_df.dropna()
# Plotting call ratio with close price and volume
# MPF package requires volume to be explicitly named
# Dropping share volume as calculation is already made
# Renaming call volume to volume
AAPL_df = AAPL_df.drop(
'volume', axis = 1).rename(
columns = {'call_volume':'volume'})
# Adding a call ratio (in %) as the bottom panel secondary y axis
ap = mpf.make_addplot((AAPL_df['call_ratio']), panel = 1, linestyle = 'dotted', ylabel = 'Options % ratio')
# Plotting AAPL share price with Open, High, Low, Close candles
# call_volume = volume
mpf.plot(AAPL_df,
type = 'candle',
volume = True,
addplot = ap,
ylabel = 'AAPL share price',
ylabel_lower = 'Call Volume')
这会产生这个情节:
这没有显示正确的情节。删除 addplot = ap
不会更改此图像。
但是,具有不同代码数据框的相同代码在下面工作(它们的格式完全相同)
# Plotting call ratio with close price and volume
ap = mpf.make_addplot((TSLA_df['call_ratio']), panel = 1, color = 'black', linestyle = 'dotted', ylabel = 'Call volume %')
mpf.plot(TSLA_df,
type = 'candle',
volume = True,
addplot = ap,
style = 'binance',
ylabel = 'TSLA share price',
ylabel_lower = 'Call Volume')
产生:
他们都在从数据框中提取提到特定代码的数据,但没有 NaN,所以我不知道为什么它不起作用。我试图让下框底部的 y 轴上的虚线。我想我正在努力弄清楚为什么相同的代码不适用于特定的情节,并且想知道这类问题是否与我的 matplotlib finance 代码有关。
如果有人知道为什么会发生这种情况,我们将不胜感激。
样本 df:
date ticker call_volume call_ratio open low high close volume
2021-03-08 AAPL 1229656 0.5782918149466192 120.93 116.209999 121.0 116.360001 154376600.0
2021-03-09 AAPL 774465 3.357156230430039 119.029999 118.790001 122.059998 121.089996 129525800.0
2021-03-10 AAPL 447447 3.9110777365810923 121.690002 119.449997 122.16999799999999 119.980003 111943300.0
2021-03-11 AAPL 577996 1.730115779347954 122.540001 121.260002 123.209999 121.959999 103026500.0
2021-03-12 AAPL 884787 0.5651077603988305 120.400002 119.160004 121.16999799999999 121.029999 88105100.0
2021-03-15 AAPL 778816 1.0272002629632673 121.410004 120.41999799999999 124.0 123.989998 92403800.0
2021-03-16 AAPL 1398777 1.8768538516146607 125.699997 124.720001 127.220001 125.57 115227900.0
2021-03-17 AAPL 978950 0.30645078911078194 124.050003 122.339996 125.860001 124.760002 111932600.0
2021-03-18 AAPL 1041143 2.7229688909208436 122.879997 120.32 123.18 120.529999 121229700.0
2021-03-19 AAPL 1123895 2.2817967870664075 119.900002 119.68 121.43 119.989998 185549500.0
您可能希望在调用之前打印出 make_addplot()
和 plot()
调用的数据参数,以绝对确定以下假设成立...
假设您的数据没有因为以下原因而改变:
I had this code working earlier tonight and displaying the 2 correct y labels/axis, and changed relatively nothing of importance ...
那么很可能通过在您对 mpf.make_addplot()
.
的调用中添加 secondary_y=True
来解决问题
根据 mplfinance addplot documentation (between In [15]
and In [16]
) ...
mpf.make_addplot()
有一个名为 secondary_y
的关键字参数,它可以有 三个 可能的值:True
、False
和 'auto'
。
- 默认值为
'auto'
,这意味着如果您不指定secondary_y
,或者如果您指定secondary_y='auto'
,那么mpf.plot()
将尝试决定是否需要辅助 y 轴,方法是将 addplot 数据的数量级与图中已有数据的数量级进行比较。
- 如果
mpf.plot()
弄错了,你总是可以通过设置secondary_y=True
或[=51来覆盖=]secondary_y=False
.
P.S。您可能 也 想将 color=black
添加到第一个 mpf.make_addplot()
调用(就像在第二个调用中一样)。使用您的示例数据进行重现,这是没有和有 color=black
的情况:(注意:您在上面的第一组代码中没有 style='binance'
,尽管您发布的图像确实如此似乎有它)。
我正在使用 matplotlib finance (mpfinance),目前遇到奇怪的间歇性绘图问题。 (堆栈溢出中没有它的标记,因此正确标记它具有挑战性:https://github.com/matplotlib/mplfinance)
我让这段代码在今晚早些时候运行并显示了 2 个正确的 y labels/axis,除了一些语法清理之外,代码中相对没有什么重要的改变。
在 AAPL 的附带图片中,似乎次要 y 轴试图绘制,但是,它显示为总体积的百分比,而不是它自己的带有百分比的 y 轴。
评论应该解释思维过程。
import mplfinance as mpf
# AAPL call volume %
# Selecting specifics mentioning AAPL
AAPL_df = naster_df[master_df['ticker'] == 'AAPL'][[
'ticker', 'date', 'call_volume', 'put_volume',
'call_ratio', 'put_ratio', 'open', 'low',
'high', 'close','volume']]
# MPF requires DateTimeIndex for plotting
AAPL_df = AAPL_df.set_index('date')
# Dropping NA's, Not sure if needed so commented out
AAPL_df.dropna()
# Plotting call ratio with close price and volume
# MPF package requires volume to be explicitly named
# Dropping share volume as calculation is already made
# Renaming call volume to volume
AAPL_df = AAPL_df.drop(
'volume', axis = 1).rename(
columns = {'call_volume':'volume'})
# Adding a call ratio (in %) as the bottom panel secondary y axis
ap = mpf.make_addplot((AAPL_df['call_ratio']), panel = 1, linestyle = 'dotted', ylabel = 'Options % ratio')
# Plotting AAPL share price with Open, High, Low, Close candles
# call_volume = volume
mpf.plot(AAPL_df,
type = 'candle',
volume = True,
addplot = ap,
ylabel = 'AAPL share price',
ylabel_lower = 'Call Volume')
这会产生这个情节:
这没有显示正确的情节。删除 addplot = ap
不会更改此图像。
但是,具有不同代码数据框的相同代码在下面工作(它们的格式完全相同)
# Plotting call ratio with close price and volume
ap = mpf.make_addplot((TSLA_df['call_ratio']), panel = 1, color = 'black', linestyle = 'dotted', ylabel = 'Call volume %')
mpf.plot(TSLA_df,
type = 'candle',
volume = True,
addplot = ap,
style = 'binance',
ylabel = 'TSLA share price',
ylabel_lower = 'Call Volume')
产生:
他们都在从数据框中提取提到特定代码的数据,但没有 NaN,所以我不知道为什么它不起作用。我试图让下框底部的 y 轴上的虚线。我想我正在努力弄清楚为什么相同的代码不适用于特定的情节,并且想知道这类问题是否与我的 matplotlib finance 代码有关。
如果有人知道为什么会发生这种情况,我们将不胜感激。
样本 df:
date ticker call_volume call_ratio open low high close volume
2021-03-08 AAPL 1229656 0.5782918149466192 120.93 116.209999 121.0 116.360001 154376600.0
2021-03-09 AAPL 774465 3.357156230430039 119.029999 118.790001 122.059998 121.089996 129525800.0
2021-03-10 AAPL 447447 3.9110777365810923 121.690002 119.449997 122.16999799999999 119.980003 111943300.0
2021-03-11 AAPL 577996 1.730115779347954 122.540001 121.260002 123.209999 121.959999 103026500.0
2021-03-12 AAPL 884787 0.5651077603988305 120.400002 119.160004 121.16999799999999 121.029999 88105100.0
2021-03-15 AAPL 778816 1.0272002629632673 121.410004 120.41999799999999 124.0 123.989998 92403800.0
2021-03-16 AAPL 1398777 1.8768538516146607 125.699997 124.720001 127.220001 125.57 115227900.0
2021-03-17 AAPL 978950 0.30645078911078194 124.050003 122.339996 125.860001 124.760002 111932600.0
2021-03-18 AAPL 1041143 2.7229688909208436 122.879997 120.32 123.18 120.529999 121229700.0
2021-03-19 AAPL 1123895 2.2817967870664075 119.900002 119.68 121.43 119.989998 185549500.0
您可能希望在调用之前打印出 make_addplot()
和 plot()
调用的数据参数,以绝对确定以下假设成立...
假设您的数据没有因为以下原因而改变:
I had this code working earlier tonight and displaying the 2 correct y labels/axis, and changed relatively nothing of importance ...
那么很可能通过在您对 mpf.make_addplot()
.
secondary_y=True
来解决问题
根据 mplfinance addplot documentation (between In [15]
and In [16]
) ...
mpf.make_addplot()
有一个名为secondary_y
的关键字参数,它可以有 三个 可能的值:True
、False
和'auto'
。- 默认值为
'auto'
,这意味着如果您不指定secondary_y
,或者如果您指定secondary_y='auto'
,那么mpf.plot()
将尝试决定是否需要辅助 y 轴,方法是将 addplot 数据的数量级与图中已有数据的数量级进行比较。 - 如果
mpf.plot()
弄错了,你总是可以通过设置secondary_y=True
或[=51来覆盖=]secondary_y=False
.
- 默认值为
P.S。您可能 也 想将 color=black
添加到第一个 mpf.make_addplot()
调用(就像在第二个调用中一样)。使用您的示例数据进行重现,这是没有和有 color=black
的情况:(注意:您在上面的第一组代码中没有 style='binance'
,尽管您发布的图像确实如此似乎有它)。