資料視覺化(二)A股三大指數10年漲跌幅比較:資料視覺化

快樂蟲發表於2020-11-13

獲得資料之後,利用matplotlib做一個10年累計漲跌幅動畫。

工具:
Jupyter notebook
matplotlib
pandas

思路:

  1. 準備資料
  2. 建立畫布
  3. 初始化影像
  4. 更新影像
  5. 建立動畫物件
  6. 展示

程式碼如下:

%matplotlib notebook  

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

from matplotlib.animation import FuncAnimation

# 用於顯示中文
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

# 1.準備資料
# 1.1 載入資料
datas = pd.read_csv('./三大指數累積漲幅對比.csv')
# 1.2 準備折線圖需要的資料
# 日期,作為橫軸的刻度
x_ticks = datas.iloc[0:, 0]
# x軸的資料
x = list(range(x_ticks.shape[0]))
# 上證綜指漲跌幅
sh_000001 = datas['上證綜指'].values
sz_399001 = datas['深圳成指'].values
sz_399006 = datas['創業板指'].values

# 2. 建立畫布
fig, ax = plt.subplots(figsize=(10, 6), dpi=100)
# 3.1 初始化折線圖物件
sh_000001_line, = plt.plot([], [], color='r', label='上證綜指')
sz_399001_line, = plt.plot([], [], color='g', label='深圳成指')
sz_399006_line, = plt.plot([], [], color='b', label='創業板指')
# 3.2顯示圖例
plt.legend()
# 3.3 設定x軸,y軸的範圍以及x軸的刻度
ax.xaxis.set_major_locator(ticker.MultipleLocator(250))
plt.ylim(min(sz_399006), max(sz_399006))
plt.xlim(0, max(x))
plt.xticks(x[0::250], x_ticks[0::250])

# 4 更新影像
def update(i):
    # 更新折線圖資料
    start = 0
    end = i + 1
    # 更新上證綜指折線圖
    sh_000001_line.set_data(x[start:end], sh_000001[start:end])
     # 更新深圳成指折線圖
    sz_399001_line.set_data(x[start:end], sz_399001[start:end])
     # 更新創業板指折線圖
    sz_399006_line.set_data(x[start:end], sz_399006[start:end])
    
    return sh_000001_line, sz_399001_line,  sz_399006_line

# 5 建立動畫物件
animation = FuncAnimation(fig, update, frames=x, interval=50, repeat=False)
animation.save('A股三大指數2010年11月11日至2020年11月11日十年累計漲幅對比.mp4', fps=20)

# 6 展示
plt.show()

做了個動畫

成片-2020-11-13 06:39:29

相關文章