進行觀察還是需要用圖表表示,這時候疊圖就很好用。之前都一張一張畫,現在呈現疊圖的方式。
本日程式碼使用: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}) # 設定圖的標題及文字大小
產生的圖片就會長這樣:
接著是畫每日的交易量,X軸資料不變,把Y軸資料改成df["TranscationAmount"]
:
# 畫圖
plt.plot(df["TradeDate"], df["TranscationAmount"],"b") # (x軸資料, y軸資料, 線的顏色)
plt.title("TranscationAmount", {"fontsize":15}) # 設定圖的標題及文字大小
因此會畫出:
這樣做成兩張圖,雖然很簡單,但是很難比較之間的關係,因此就需要合併圖表,也就是疊圖的概念。
首先要製作子圖,也就是使用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()
結果就是這樣,一目了然:
這邊除了讓我們更了解數據,也熟悉一下matplotlib
的畫圖功能,因為疊圖觀察比一張張分開看更容易理解,可以驗證我們確認訊號燈的邏輯。