matplotlib 學習總結

大樹2發表於2018-01-15

 matplotlib 學習總結

作者:csj
更新時間:01.09

email:59888745@qq.com

說明:因內容較多,會不斷更新 xxx學習總結;

回主目錄:2017 年學習記錄和總結

 

# matplotlib 及環境配置
# 資料圖的組成結構,與 matplotlib 對應的名稱
# 常見的資料繪圖型別,與繪製方法
# 您可能需要以下的準備與先修知識:
# Python開發環境及matplotlib工具包
# Python基礎語法
# Python numpy 包使用

# 一幅資料圖基本上包括如下結構:
# Data: 資料區,包括資料點、描繪形狀
# Axis: 座標軸,包括 X 軸、 Y 軸及其標籤、刻度尺及其標籤
# Title: 標題,資料圖的描述
# Legend: 圖例,區分圖中包含的多種曲線或不同分類的資料
# 其他的還有圖形文字 (Text)、註解 (Annotate)等其他描述

# 匯入 matplotlib 包相關工具包
# 準備資料,numpy 陣列儲存
# 繪製原始曲線
# 配置標題、座標軸、刻度、圖例
# 新增文字說明、註解
# 顯示、儲存繪圖結果
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,10,0.2)
y = np.sin(x)
 
plt.rcParams['figure.figsize']=(12,6)# x zhou lenght =12,y zhou lenght ==6
plt.plot(x,y,color='#0F5E0F',linestyle='--',marker='*',label=r'$ s=sin{x} $')
ax = plt.subplot(111)
#配置標題、座標軸、刻度、圖例,hide top,right border line
ax.spines['right'].set_color('none') # delete the right borther line
ax.spines['top'].set_color('none') #delete the top borter line
#ax.xaxis.set_ticks_position('bottom')
#ax.spines['bottom'].set_position(('data', 0)) #move the x zhou to 0.00

# 移動左邊邊框線,相當於移動 y 軸
#ax.yaxis.set_ticks_position('left')
#ax.spines['left'].set_position(('data', 0))
#plt.title(r'$the \ function \ figure \ of \ cos(), \ sin() \ and \ sqrt()$', fontsize=19)
plt.title(r' this  is  title  name  ',fontsize=19)

plt.xlabel(r'x', fontsize=18, labelpad=12)
plt.ylabel(r'y', fontsize=18, labelpad=12.5)
#設定文字描述、註解
plt.text(0.8, 0.9, r'$x \in [0.0, \ 10.0]$', color='k', fontsize=15)
plt.text(0.8, 0.8, r'$y \in [-1.0, \ 4.0]$', color='k', fontsize=15)
#設定圖例及位置
plt.legend(['cos(x)'],loc='upper right')

# 特殊點新增註解
plt.scatter([8,],[np.sqrt(8),], 50, color ='m') # 使用散點圖放大當前點
plt.annotate(r'$2\sqrt{2}$', xy=(8, np.sqrt(8)), xytext=(8.5, 2.2), fontsize=16, color='#090909', arrowprops=dict(arrowstyle='->', connectionstyle='arc3, rad=0.1', color='#090909'))

# 顯示網格線
#plt.grid(True)


plt.show()

 

常用圖形

曲線圖:

matplotlib.pyplot.plot(data)
x =np.arange(-5,5,0.1)
y = x**2
plt.plot(x,y)
plt.show()

灰度圖:
matplotlib.pyplot.hist(data)
x =[1,2,3,4,5,6,7,8]
plt.hist(x,bins=16)
plt.show()

散點圖:
# x =[1,2,3,4,5,6,7,8]
# y =[1,2,3,4,5,6,7,8]
matplotlib.pyplot.scatter(data)
x=np.random.normal(size=100)
y=np.random.normal(size=100)
plt.scatter(x,y)
plt.show()

箱式圖:
x =[1,2,3,4,5,6,7,8]
plt.boxplot(x)
plt.show()

 

remark:

ax.scatter(x_data, y_data, color='r', alpha = 0.75 )

# 柱狀圖
plt.bar(x,y)

# 定義繪製柱狀圖的函式
def barplot(x_data, y_data, error_data, x_label, y_label, title):
_, ax = plt.subplots()
# 柱狀圖
ax.bar(x_data, y_data, color = '#539caf', align = 'center')
# 繪製方差
# ls='none'去掉bar之間的連線
ax.errorbar(x_data, y_data, yerr = error_data, color = '#297083', ls = 'none', lw = 5)
ax.set_ylabel(y_label)
ax.set_xlabel(x_label)
ax.set_title(title)

# 繪圖函式呼叫
barplot(x_data = mean_total_co_day.index.values
, y_data = mean_total_co_day['mean']
, error_data = mean_total_co_day['std']
, x_label = 'Day of week'
, y_label = 'Check outs'
, title = 'Total Check Outs By Day of Week (0 = Sunday)')


# 不同種類(species)鳶尾花萼片和花瓣的大小關係(分類散點子圖),中文處理
plt.scatter(data['sepal_length'] , data['petal_length'], color='r', alpha=0.7)
plt.scatter(data['petal_width'], data['petal_width'], color='b', alpha=0.7)
plt.xlabel("x")
plt.ylabel("y")
plt.title("萼片與花瓣的比較".decode('utf-8'))
plt.legend(['萼片與花瓣長度比較'.decode('utf-8'), '萼片與花瓣寬度比較'.decode('utf-8')], loc='upper left')

總結:
關聯分析、數值比較:散點圖、曲線圖
分佈分析:灰度圖、密度圖
涉及分類的分析:柱狀圖、箱式圖


更全的參考
http://matplotlib.org/api/index.html