iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
Software Development

金融分析 X Python-訊號燈系列 第 12

【D12】製作圖表:加權指數和交易金額的圖表

前言

進行觀察還是需要用圖表表示,這時候疊圖就很好用。之前都一張一張畫,現在呈現疊圖的方式。

本日程式碼使用:d12_MarketTransInfo_pic.ipynb


作法

首先:取得資料庫資料

這次我們要從StockTransactionInfo取得資料:

# 取得資料庫的資料
df = pandas.read_sql("SELECT * FROM StockTransactionInfo WHERE TradeDate >'2021-09-01'", con=conn)
conn.close() # 關閉連線

各自繪圖

取得資料後,存在df參數中,然後我們先畫出每日加權指數的圖和每日的交易金額的圖。

首先是加權指數的圖,直接把X軸資料使用df["TradeDate"],Y軸資料使用df["Taiex"]

# 畫圖
plt.plot(df["TradeDate"], df["Taiex"],"r")  # (x軸資料, y軸資料, 線的顏色)
plt.title("Taiex", {"fontsize":15})     # 設定圖的標題及文字大小

產生的圖片就會長這樣:

https://ithelp.ithome.com.tw/upload/images/20210912/20103826OCVIUVwhwz.png

接著是畫每日的交易量,X軸資料不變,把Y軸資料改成df["TranscationAmount"]

# 畫圖
plt.plot(df["TradeDate"], df["TranscationAmount"],"b")  # (x軸資料, y軸資料, 線的顏色)
plt.title("TranscationAmount", {"fontsize":15})     # 設定圖的標題及文字大小

因此會畫出:

https://ithelp.ithome.com.tw/upload/images/20210912/20103826t21NnKvmyC.png

合併圖表

這樣做成兩張圖,雖然很簡單,但是很難比較之間的關係,因此就需要合併圖表,也就是疊圖的概念。

首先要製作子圖,也就是使用plt.subplots(),然後把這兩個圖表都放在這裡面,最後畫出大圖把這兩個子圖一同呈現。

所以先製作框架:

fig, ax1 = plt.subplots()
plt.title("Taiex point & Amount")
plt.xlabel("date")
ax2 = ax1.twinx()

然後做出第一張表,是用折線圖的方式呈現加權指數。其中的線和字都是藍色的:

ax1.set_ylabel("Taiex", color="blue")
ax1.plot(df["TradeDate"], df["Taiex"], color="blue", alpha=1)
ax1.tick_params(axis="y", labelcolor="blue")

第二張表,是用長條圖表示,這樣比較清楚辨別兩個不同的資料,而這邊的資料是用紅色呈現,並且有透明度。

ax2.set_ylabel("Amount", color="r")
ax2.bar(df["TradeDate"], df["TranscationAmount"], color="r", alpha=0.5) # alpha: 增加透明度
ax2.tick_params(axis="y", labelcolor="r")

最後再畫出來:

fig.tight_layout()
plt.show()

結果就是這樣,一目了然:

https://ithelp.ithome.com.tw/upload/images/20210912/20103826dERwqt4KsA.png


後記

這邊除了讓我們更了解數據,也熟悉一下matplotlib的畫圖功能,因為疊圖觀察比一張張分開看更容易理解,可以驗證我們確認訊號燈的邏輯。


上一篇
【D11】避免重複交易資料匯入:使用PK和Unique key
下一篇
【D13】取得:加權指數歷史資料,並觀察量與指數的關係
系列文
金融分析 X Python-訊號燈32

尚未有邦友留言

立即登入留言