教學
資料視覺化
本頁內容7
finlab.plot 提供一系列圖表工具,讓你更方便洞察市場數據。每個函式都回傳 plotly 圖表,完整參數見 finlab.plot。
| 想看什麼 | 用哪個 | 市場 |
|---|---|---|
| K 線與技術指標 | plot_tw_stock_candles()、plot_candles() | 台股、任何價格序列 |
| 產業板塊的漲跌與資金 | plot_tw_stock_treemap() | 台股 |
| 持股的財務指標分級 | plot_tw_stock_radar() | 台股、美股 |
| 本益比位階 | plot_tw_stock_river() | 台股 |
| 策略報酬比較 | StrategyReturnStats | 台股、美股 |
| 多策略部位 | StrategySunburst | 台股 |
畫 K 線與技術指標
畫出 K 線圖,疊加多條 EMA 均線,下方再加 STOCH、RSI 等技術指標子圖。
plot_tw_stock_candles() 會自動下載台股的股價:
from finlab.plot import plot_tw_stock_candles
from finlab.data import indicator
stock_id = '2330'
recent_days = 1000
adjust_price = False
resample = "D"
overlay_func = {
'ema_5': indicator('EMA', timeperiod=5),
'ema_10': indicator('EMA', timeperiod=10),
'ema_20': indicator('EMA', timeperiod=20),
'ema_60': indicator('EMA', timeperiod=60),
}
k, d = indicator('STOCH')
rsi = indicator('RSI')
technical_func = [{'K': k, 'D': d}, {'RSI': rsi}]
plot_tw_stock_candles(
stock_id,
recent_days,
adjust_price,
resample,
overlay_func=overlay_func,
technical_func=technical_func,
)adjust_price=False 表示用未還原股價計算。
plot_candles() 可以用任何價格序列畫 K 線,自己傳入開高低收量:
from finlab import data
from finlab.data import indicator
from finlab.plot import plot_candles
data.set_market('us')
symbol = 'AAPL'
overlay_func = {
'ema_5': indicator('EMA', timeperiod=5),
'ema_10': indicator('EMA', timeperiod=10),
'ema_20': indicator('EMA', timeperiod=20),
'ema_60': indicator('EMA', timeperiod=60),
}
k, d = indicator('STOCH')
rsi = indicator('RSI')
technical_func = [{'K': k, 'D': d}, {'RSI': rsi}]
plot_candles(
symbol,
close=data.get('price:close')[symbol],
open_=data.get('price:open')[symbol],
high=data.get('price:high')[symbol],
low=data.get('price:low')[symbol],
volume=data.get('price:volume')[symbol],
recent_days=1000,
resample='D',
overlay_func=overlay_func,
technical_func=technical_func,
)data.indicator() 預設用未還原股價,所以上面的 K 線也用未還原的 price:* 序列。
看產業板塊的漲跌與資金
巢狀樹狀圖(treemap)把台股依市場與產業分類,可以顯示多維度資料並和圖表互動。下面以成交金額作為方塊面積、期間報酬率作為顏色:
from finlab.plot import plot_tw_stock_treemap
plot_tw_stock_treemap(
start='2021-07-01', end='2021-07-02', area_ind="turnover", item="return_ratio"
)也可以用市值作為面積、本益比作為顏色,搭配 clip 與 color_continuous_scale 參數自訂視覺效果:
from finlab.plot import plot_tw_stock_treemap
plot_tw_stock_treemap(
start='2021-07-01',
end='2021-07-02',
area_ind="market_value",
item="price_earning_ratio:本益比",
clip=(0, 50),
color_continuous_scale='RdBu_r',
)比較持股的財務指標
雷達圖比較持股組合的指標分級特性。每個指標會在所有股票之間排名、切成幾個級距,所以單位不同的指標也能放在一起比。支援 bar_polar、line_polar、scatter_polar 等模式。
bar_polar 模式
不指定 feats 時使用預設的財務指標:
from finlab.plot import plot_tw_stock_radar
portfolio = ['1101', '2330', '8942', '6263']
plot_tw_stock_radar(portfolio=portfolio, mode="bar_polar")from finlab import data
from finlab.plot import plot_tw_stock_radar
data.set_market('us')
feats = [
'us_ratios:gross_profit_margin',
'us_ratios:operating_profit_margin',
'us_ratios:net_profit_margin',
'us_key_metrics:return_on_equity',
]
plot_tw_stock_radar(
portfolio=['AAPL', 'MSFT', 'NVDA', 'AMZN'], feats=feats, mode='bar_polar'
)line_polar 模式:自訂財務指標
用 feats 指定要比較的財務指標,cut_bins 調整分級數量:
from finlab.plot import plot_tw_stock_radar
feats = [
'fundamental_features:營業毛利率',
'fundamental_features:營業利益率',
'fundamental_features:稅後淨利率',
'fundamental_features:現金流量比率',
'fundamental_features:負債比率',
]
plot_tw_stock_radar(portfolio=["9939"], feats=feats, mode="line_polar", cut_bins=8)from finlab import data
from finlab.plot import plot_tw_stock_radar
data.set_market('us')
feats = [
'us_ratios:gross_profit_margin',
'us_ratios:operating_profit_margin',
'us_ratios:net_profit_margin',
'us_ratios:current_ratio',
'us_ratios:debt_to_assets_ratio',
]
plot_tw_stock_radar(portfolio=['NVDA'], feats=feats, mode='line_polar', cut_bins=8)us_ratios:* 與 us_key_metrics:* 存的是近期的每日快照,適合這種比較最新數值的用途。
看本益比在歷史區間的位置
河流圖用 PE 或 PB 的最高與最低值繪製,判斷指標目前所處的位階:
from finlab.plot import plot_tw_stock_river
plot_tw_stock_river(
stock_id='2330', start='2015-1-1', end='2022-7-1', mode='pe', split_range=10
)比較策略與大盤的報酬
StrategyReturnStats 比較你上傳的策略在一段期間內的報酬,並和對照指數比較:
不指定 benchmark_return 時,對照指數是台股的發行量加權股價報酬指數:
from finlab.plot import StrategyReturnStats
stats = StrategyReturnStats('2025-01-01', '2025-12-31')
stats.plot_strategy_last_return().show()
stats.plot_strategy_creturn().show()用 benchmark_return 改成和 S&P 500 比較:
from finlab import data
from finlab.plot import StrategyReturnStats
sp500 = data.get('world_index:adj_close')['^GSPC']
stats = StrategyReturnStats('2025-01-01', '2025-12-31', benchmark_return=sp500)
stats.plot_strategy_last_return().show()
stats.plot_strategy_creturn().show()看多個策略的部位配置
StrategySunburst 把你在 FinLab 雲端的多個策略部位,依台股產業畫成旭日圖,方便監控多策略的部位配置。只適用台股策略。
from finlab.plot import StrategySunburst
strategies = StrategySunburst()
strategies.plot().show()下一步
- finlab.plot 每個圖表函式的完整參數與更多範例。
- 技術指標 用
data.indicator()計算 TA-Lib 指標。 - 因子分析 用
plot_line畫出因子報酬與 IC 的走勢。 - 歷史回測 回測報告裡的報酬曲線與交易圖表。
這一頁有幫到你嗎?