生成矩陣數據:
import pandas as pd data = pd.read_csv('./shiyelv.csv') data['date'] = pd.to_datetime(data['date']) print(data.head(5))
date shiyelv 0 2017-01-01 4.5 1 2017-02-01 4.6 2 2017-03-01 5.0 3 2017-04-01 4.1 4 2017-05-01 3.8
一、拆線圖
畫一個plot折線圖:plt.plot(x軸數據,y軸數據)
import matplotlib.pyplot as plt plt.plot() # 畫一個折線圖,如果plot方法中沒有任何數據,則為空圖 plt.show() # 顯示圖
plt.plot(data['date'], data['shiyelv']) plt.show()
1.x軸刻度值的傾斜度:plt.xticks(rotation=多少傾斜度)
plt.plot(data['date'], data['shiyelv']) plt.xticks(rotation=45) # x軸的刻度數值,45度傾斜 plt.show()
2.x軸名稱:plt.xlabel(軸名稱)
3.畫圖標題:plt.title(圖表名稱)
plt.plot(data['date'], data['shiyelv']) plt.xticks(rotation=90) plt.xlabel('Month') # x軸的標題 plt.ylabel('shiyelv') # y軸的標題 plt.title('monthly shiyelv') # 畫圖的標題 plt.show()
二、在一個畫圖區間,畫多個plot折線子圖
1.
定義畫布:figure = plt.figure()
定義或添加子圖:ax = figure.add_subplot(橫向子圖數量,縱向子圖數量,這是第幾個子圖;從0開始)
注意:沒有定義或添加過的子圖,不會顯示
fig = plt.figure() # figure 就是指定畫圖的區間 ax1 = fig.add_subplot(2, 2, 1) # 在畫圖區間內,定義2行2列plot子圖中的第1個子圖 ax2 = fig.add_subplot(2, 2, 2) # 定義2行2列plot子圖中的第2個子圖 ax4 = fig.add_subplot(2, 2, 4) # 定義2行2列plot子圖中的第4個子圖 # 沒有定義第3個子圖,則第3個子圖就不會顯示出來 plt.show()
2.
定義畫圖區域,並指定區域大小: figure = plt.figure(figsize=(長度,寬度))
為子圖添加數據:ax.plot(x軸數據,y軸數據)
fig = plt.figure(figsize=(10, 6)) # 指明畫圖區間的大小 ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2) ax1.plot(np.random.randint(1, 5, 5), np.arange(5)) # 為第1個子圖添加數據 ax2.plot(np.arange(10)*3, np.arange(10)) # 為第2個子圖添加數據 plt.show()
3.在同一個子圖中,畫出多條線:ax1.plot多次或者plt.plot多次
ax1.plot(x同數據,y軸數據,color=顏色)
ax1.plot(x同數據,y軸數據,color=顏色)
fig = plt.figure(figsize=(10, 6)) ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2) ax1.plot(np.random.randint(1, 5, 5), np.arange(5), c='red') # 為折線plot指明顏色color ax1.plot(np.random.randint(1, 50, 5), np.arange(5), c='blue') # 為子圖添加第二條折線plot ax2.plot(np.arange(10)*3, np.arange(10)) plt.show() # 顏色也可以用(R, G, B)三元組來表示
4.
為多條折線圖,同時添加label:plt.plot(x軸數據,y軸數據,c=顏色,label=此折線的名稱)
指定label展示的位置:plt.legend(loc=位置),位置包括
'best' 0 'upper right' 1 'upper left' 2 'lower left' 3 'lower right' 4 'right' 5 'center left' 6 'center right' 7 'lower center' 8 'upper center' 9 'center' 10
fig = plt.figure(figsize=(10, 6)) colors = ['red', 'blue', 'green', 'orange', 'black'] for i in range(5): start_index = i*12 end_index = (i+1)*12 subset = data[start_index: end_index] label = str(2017 + i) plt.plot(subset['date'], subset['shiyelv'], c=colors[i], label=label) # 為折線添加label plt.legend(loc='best') # 指明label展示的地方
三、一個比較完整的折線圖:
data仍然為失業率
fig = plt.figure(figsize=(10,6)) colors = ['red', 'blue', 'green', 'orange', 'black'] for i in range(5): start_index = i*12 end_index = (i+1)*12 subset = data[start_index:end_index] subset['month'] = [int(str(x).split('-')[1]) for x in subset['date']] label = str(1948 + i) plt.plot(subset['month'], subset['shiyelv'], c=colors[i], label=label) plt.legend(loc='upper left') plt.xlabel('Month, Integer') plt.ylabel('Unemployment Rate, Percent') plt.title('Monthly Unemployment Trends, 1948-1952') plt.show()
參考:
https://www.cnblogs.com/qtww56/archive/2018/04.html
https://blog.csdn.net/yimi_ac/article/details/79008555
https://blog.csdn.net/yimi_ac/article/details/79008555