天天看點

python畫圖庫之matplotlib.pyplot詳細使用方法說明

目錄

一. 讀取檔案畫圖篇

二. 中文不顯示篇

三. 各種标注篇

四. 面向對象篇

五. 補充

一. 讀取檔案畫圖篇

1. 怎麼批量讀csv檔案(pandas方法)并畫圖

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

# 根目錄
root_dir = r"D:/xxx/xxx"
# 依次讀取根目錄下的每一個檔案
i = 0
for file in os.listdir(root_dir):
	i += 1
    # 隻讀取csv檔案
	if file.split('.')[-1] == 'CSV':
		file_name = root_dir + "/" + file
		filein = open(file_name, "r+")
		# pandas方法  astype是将類型轉化,友善作圖
		line = pd.read_csv(filein, header=None)[16:].astype('float')
		# print(line.head()[0])
		plt.subplot(3,5,i)
		plt.plot(line[0],line[3],label='V')
		plt.plot(line[0],line[1],label='A')
		plt.legend(loc='upper left')
		plt.title('%d' %i)

plt.show()
           
python畫圖庫之matplotlib.pyplot詳細使用方法說明

二. 中文不顯示篇

1. 為啥我的中文是方框

因為matplotlib庫的配置資訊裡面沒有中文字型的相關資訊 

請在最開頭寫上

plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei'] # 一般隻要這一行就可以
           

三. 各種标注篇

1. title

plt.title(label, fontdict=None, loc='center', pad=None, **kwargs)

plt.title('Center Title')
plt.title('Left Title', loc='left')
plt.title('Right Title', loc='right')
           
python畫圖庫之matplotlib.pyplot詳細使用方法說明

2. legend

fig, ax = plt.subplots()
ax.plot(a, c, 'k--', label='Model length')
ax.plot(a, d, 'k:', label='Data length')
ax.plot(a, c + d, 'k', label='Total message length')

legend = ax.legend(loc='upper center', shadow=True, fontsize='x-large')

# Put a nicer background color on the legend.
legend.get_frame().set_facecolor('C0')
           
python畫圖庫之matplotlib.pyplot詳細使用方法說明

3. label

plt.xlabel('time')
plt.ylabel('my overall health')
           
python畫圖庫之matplotlib.pyplot詳細使用方法說明

3. grid

plt.grid(b=None, which='major', axis='both', **kwargs)

plt.grid(color='r', linestyle='-', linewidth=2)
           

4. linestyle

python畫圖庫之matplotlib.pyplot詳細使用方法說明
python畫圖庫之matplotlib.pyplot詳細使用方法說明
A,=plt.plot(x1,y1,'-r',label='A',linewidth=5.0,ms=10)
           

線條粗細使用linewidth設定,對應線條上的marker大小設定為ms參數。因為有時候粗線條,是以對應marker大小也需要增加。

如果想要标記marker為空心,可以在後面加上 markerfacecolor='none'

四. 面向對象篇

Matplotlib中的兩種繪圖API說明

Pyplot封裝了底層的繪圖函數提供了一種繪圖環境,使得我們可以直接像在MATLAB那樣繪制圖形。當我們使用import matplotlib.pyplot as plt語句導入pyplot子產品,并使用plt.plot()繪制圖形的時候,預設的Figure以及Axes等對象會自動建立以支援圖形的繪制。Pyplot一來使得對MATLAB繪圖熟悉的童鞋更加容易上手,二來屏蔽了一些底層通用的繪圖對象的建立細節,使用更加簡潔。

在使用面向對象的程式設計接口時候,我們需要自己建立畫布(FigureCanvas),自己建立圖對象(Figure),自己建立Axes(一個Figure可以包含一個或者多個Axes,一個Axes可以了解為一個子圖,使用一次plot()繪圖函數便會建立一個Axes),所有對象一起才能完成一次完整的繪圖。使用面向對象程式設計接口有利于我們對于圖形繪制的完整控制,但是相對于Pyplot接口可能需要書寫更多的代碼。

matplotlib指令與格式:圖像(figure)與子區域(axes)布局與規劃

五. 補充

本文總結了 Matplotlib 以及 Seaborn 用的最多的50個圖形