python下matplotlib畫基本圖形(多種基本圖形,持續更新)

matplotlib畫柱狀圖,折線圖,餅圖,散點圖,誤差圖

首先導入maplotlib畫圖函數

import matplotlib.pyplot as plt

先在python導入我們的excel數據:
在這裏插入圖片描述
接下來進入主題:

1.柱狀圖

以上表爲例子,我們以姓名爲橫座標,工資爲縱座標畫出柱狀圖:
代碼如下:

import pandas as pd                      #導入pandas庫
import matplotlib.pyplot as plt          #導入畫圖的庫

excel_file = './try.xlsx'               #導入excel數據
data = pd.read_excel(excel_file)        #讀入數據

"""柱狀圖"""
plt.rcParams['font.sans-serif'] = ['SimHei']   #可以顯示中文
plt.figure(figsize=(10, 6))                    #畫圖,大小可自己設置
plt.ylabel('工資(元)')                         #橫縱座標的名稱設置
plt.xlabel('姓名')
x = data['姓名']                                #橫縱座標的數據導入
y = data['工資']
plt.bar(x, y)                                  #東西放進bar裏(當成一個盒子理解)
plt.title('柱狀圖演示')                          #標題
plt.show()

結果:
在這裏插入圖片描述

2.折線圖

知道條形統計圖之後折線其實大同小異:
代碼如下:

"""折線圖"""
import pandas as pd                      #導入pandas庫
import matplotlib.pyplot as plt          #導入畫圖的庫

excel_file = './try.xlsx'               #導入excel數據
data = pd.read_excel(excel_file)        #讀入數據
plt.rcParams['font.sans-serif'] = ['SimHei']   #可以顯示中文
plt.figure(figsize=(10, 6))                    #畫圖,大小可自己設置
plt.plot(data['姓名'], data['工資'], color='blue', label='線的名稱', marker='s') #marker折線形狀
plt.legend()                                   #顯示圖例,這裏指顯示‘label='線的名稱'
plt.ylabel('工資(元)')
plt.show()                                     #顯示

效果圖簡單就不展示了

3.餅圖

3.1普通餅圖(顯示比例)

展示各個部門的經濟比例圖:
方法很多,我的方法是先把各部門的總工資先計算出來,再畫圖
畫圖的關鍵就是函數plt.pie()

"""餅圖"""
import pandas as pd                      #導入pandas庫
import matplotlib.pyplot as plt          #導入畫圖的庫

excel_file = './try.xlsx'               #導入excel數據
data = pd.read_excel(excel_file)        #讀入數據

plt.rcParams['font.sans-serif'] = ['SimHei']   #可以顯示中文
plt.figure(figsize=(8, 6))                    #畫圖,大小可自己設置
bumenshuju = {'部門': ['A', 'B', 'C'],
              '部門工資': [sum(data.loc[data['部門'] == 'A', '工資']),
                         sum(data.loc[data['部門'] == 'B', '工資']),
                        sum(data.loc[data['部門'] == 'C', '工資'])]}
dataframe_1 = pd.DataFrame(bumenshuju)
# print(dataframe_1)
labels = dataframe_1['部門工資']
x = dataframe_1['部門']
plt.pie(labels, labels=x, autopct='%1.1f%%')
plt.legend('A''B''C')
plt.title('部門的工資分佈')
plt.axis('equal')
plt.show()

效果圖:
在這裏插入圖片描述

3.2可顯示具體數值的餅圖

這個難度稍微大一點
代碼展示:


"""高級餅圖"""
import pandas as pd                      #導入pandas庫
import numpy as np
import matplotlib.pyplot as plt

excel_file = './try.xlsx'               #導入excel數據
data = pd.read_excel(excel_file)        #讀入數據
plt.rcParams['font.sans-serif'] = ['SimHei']                                     #可以顯示中文
fig, ax = plt.subplots(figsize=(8, 6), subplot_kw=dict(aspect="equal"))          #畫布的基本設置

bumenshuju = {'A部門': sum(data.loc[data['部門'] == 'A', '工資']),             #構建各部門的工資字典,然後轉成dataframe表格類型
              'B部門': sum(data.loc[data['部門'] == 'B', '工資']),
              'C部門': sum(data.loc[data['部門'] == 'C', '工資'])}

data_1 = [bumenshuju[i] for i in bumenshuju.keys()]                         #即工資總數
index = [i for i in bumenshuju.keys()]                                     #部門

def func(pct, allvals):                                                       #返回餅圖裏顯示的一串字符
    absolute = int(pct/100.*np.sum(allvals))
    return "{:.1f}%\n({:d} 元)".format(pct, absolute)


wedges, texts, autotexts = ax.pie(data_1, autopct=lambda pct: func(pct, data_1),
                                  textprops=dict(color="w"))                                 #設置餅圖的東西

ax.legend(wedges, index,                                              #圖例的設置,可以自己設置
          title="部門",
          loc="center left",
          bbox_to_anchor=(1, 0, 0.5, 1))



ax.set_title("各個部門工資比例和具體工資總數")                 #標題

plt.show()

效果圖如下:
在這裏插入圖片描述

4.散點圖

直接上代碼,用的表格是一樣的

"""散點圖"""
plt.rcParams['font.sans-serif'] = ['SimHei']     #可以顯示中文
fig = plt.subplots(figsize=(10, 6))
x = np.array(data['姓名'])
y = np.array(data['工資'])
plt.scatter(x, y)                                #scatter()函數畫散點圖
plt.show()

效果圖:
在這裏插入圖片描述

5.誤差圖

代碼如下:

"""繪製誤差棒圖"""
plt.rcParams['font.sans-serif'] = ['SimHei']                       #可以顯示中文
error = []
for i in range(len(data['工資'])):                                  #把誤差搞出來,range才能迭代,這裏可以看出誤差是和均值工資的差距
    a = data['工資'][i] - np.sum(data['工資'])/len(data['工資'])
    error.append(a)
y = data['工資']
x = data['姓名']
y.plot(yerr=error)
plt.show()

效果圖如下:
在這裏插入圖片描述

接下來還有matplotlib畫的各種圖形,會積極更新的,建議收藏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章