數據分析與機器學習三:matplotlib--plot折線圖


 生成矩陣數據:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM