我想繪制一個帶有其他指標的燭臺圖,其中一個指標可以是 all nan。我為此使用了名為mplfinance 的python matplotlib 實用程式。Mplfinance 將一個引數作為構建燭臺的主要資料,第二個引數是一個帶有附加指標值的陣列。當我嘗試實作自定義指標時,我首先nan向帶有指標的陣列添加一個填充的空列,然后將其填充到帶有條件的回圈中。可能會發生整個列可以nan在回圈之后全部保留,因此我收到錯誤并且無法繪制圖形。
df = pd.DataFrame.from_dict(pd.json_normalize(newBars), orient='columns')
idf = df.copy()
idf = idf.iloc[:,[0]]
idf.columns = ['col0']
idf.assign(col1=float('nan')) # Now we add column #1
for i in range(len(idf)-1):
if a > b: # Some condition I use to calculate Col1
idf.iat[i, 1] = float_value
indicators = [
mpf.make_addplot(idf['Col0'],color='grey',width=1,panel=0),
mpf.make_addplot(idf['Col1'],color='g',type='scatter',markersize=50,marker='^',panel=0),
]
mpf.plot(df, type='candle', style='yahoo', volume=True, addplot=indicators,
figscale=1.1,figratio=(8,5), panel_ratios=(2,1))
從代碼來看,Col1 可能是全部nan,在這種情況下,我收到以下錯誤:
ValueError: zero-size array to reduction operation maximum which has no identity
nan即使陣列中存在這樣的列,我怎樣才能避免這個錯誤并只繪制沒有列的圖形?
uj5u.com熱心網友回復:
Mplfinance 是故意這樣設計的。如果您將所有 NaN 資料傳遞給mpf.make_addplot()您,則效果是什么都不繪制。在將指標添加make_addplot()到addplot指標串列之前,您可以輕松測驗是否有任何資料。
是的,如果您只需傳遞指標而無需檢查您的模型是否實際“指示”了任何內容,它可能會使您的代碼更簡單,但是(1)這將使 mplfinance 代碼必須檢查,增加(盡管非常輕微)的成本維護 mplfinance 庫,并且 (2) 可能是您錯誤地傳遞了所有 NaN 值,在這種情況下,如果 mplfinance 只是忽略資料,您可能會花費大量時間進行除錯以確定為什么您的指標沒有顯示在圖中.
如需進一步討論,請參閱:https : //github.com/matplotlib/mplfinance/issues/259#issuecomment-688429294
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336812.html
標籤:Python 熊猫 数据框 matplotlib 公共财政
上一篇:Flutter嵌套物件(基礎)
下一篇:在GUI中創建多個曲面圖
