在正式學習tensorflow2.0之前需要有一定的python基礎,對numpy,matplotlib等庫有基本的了解,筆者還是AI小白,通過寫博客來記錄自己的學習過程,同時對所學的東西進行總結。主要學習的資料西安科技大學:神經網絡與深度學習——TensorFlow2.0實戰,北京大學:人工智能實踐Tensorflow筆記博客從tf常用的庫開始,需要學習python基礎的朋友推薦菜鳥教程
TensorFlow2.0學習筆記(2)——Matplotlib數據可視化
數據可視化:
數據分析階段:理解和洞察數據之間的關系
算法調試階段:發現問題,優化算法
項目總結階段:展示項目成果
Matplotlib:第三方庫,可以快速生成高質量圖表
安裝Matplotlib庫
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
導入Matplotlib庫
import matplotlib as plt #可用pyplot庫繪制平面圖,常用import matplotlib.pyplot as plt導入
1.常用函數
figure對象:創建畫布
pit.figure(figsize=(3,2),facecolor="green") #創建畫布
plt.plot() #繪制空白圖形
plt.show() #顯示繪圖
subplot()函數——划分子圖
subplot(行數,列數,子圖序號)
例:將畫布划分為2x2的子圖區域,並繪制3個子圖
fig = plt.figure()
plt.subplot(2,2,1)
plt.subplot(2,2,2)
plt.subplot(2,2,3)
plt.show()
運行結果:
plt.rcParams[]——設置中文字體
matplotlib庫中的文字為英文,如果需要中文時容易亂碼,例如:使用plt.rcParams["font.sans-serif"] = "SimHei"使默認字體改為中文。
無法正常顯示時:
添加標題
添加全局標題:suptitle(標題文字)
添加子標題:title(標題文字)
subtitle()函數的主要參數:
title()函數的主要參數:
tight_layout()函數
檢查坐標軸標簽、刻度標簽和子圖標題,自動調整子圖,使之填充整個繪圖區域,並消除子圖之間的重疊
SUMMARIZE:
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "SimHei"
fig = plt.figure(facecolor = "lightgrey")
plt.subplot(2,2,1)
plt.title('子圖標題1')
plt.subplot(2,2,2)
plt.title('子圖標題2',loc="left",color="b")
plt.subplot(2,2,3)
myfontdict = {"fontsize":12,"color":"g","rotation":30}
plt.title('子圖標題3',fontdict=myfontdict)
plt.subplot(2,2,4)
plt.title('子圖標題4',color = "white",backgroundcolor="black")
plt.suptitle("全局標題",fontsize=20,color="red",backgroundcolor="yellow")
plt.tight_layout(rect=[0,0,1,0.9])
plt.show()
運行結果:
2.散點圖(Scatter)
數據點在直角坐標系中的分布圖
scatter()函數
text()函數
添加文字
xlabel(),ylabel()函數
設置坐標軸
增加圖例
繪制標准正態分布,均勻分布的散點圖
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["font.sans-serif"]="SimHei" #設置中文字體為默認字體
plt.rcParams["axes.unicode_minus"]=False #使“-”正常顯示
n = 1024 #隨機點個數:1024
x = np.random.normal(0,1,n) #生成數據點x坐標
y = np.random.normal(0,1,n) #生成數據點y坐標
plt.scatter(x,y,color="blue",marker=".") #繪制數據點
plt.title("標准正態分布",fontsize=20) #設置標題
plt.text(2.5,2.5,"均 值:0\n標准差:1") #顯示文本
plt.xlim(-4,4) #x軸范圍
plt.ylim(-4,4) #y軸范圍
plt.xlabel('橫坐標x',fontsize=14) #x軸名稱
plt.ylabel('縱坐標y',fontsize=14) #y軸名稱
plt.show() #顯示
運行結果:
3.折線圖(Line Chart)
在散點圖的基礎上,將相鄰的點用線段連接,描述變量變化的趨勢
plot()函數
繪制溫度和濕度數據折線圖
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["font.sans-serif"]="SimHei"
n = 24
y1 = np.random.randint(27,37,n) #生成隨機數據
y2 = np.random.randint(40,60,n)
plt.plot(y1, label="溫度") #繪制
plt.plot(y2, label="濕度")
plt.xlabel("小時",fontsize=12)
plt.ylabel("測量值",fontsize=12)
plt.title("24小時溫度濕度統計",fontsize=16)
plt.legend()
plt.show()
運行結果
4.柱形圖(Bar Chart)
由一系列高度不等的柱形圖條紋表示數據分布的情況
bar()函數
繪制柱形圖
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["font.sans-serif"]="SimHei" #設置中文字體為默認字體
plt.rcParams["axes.unicode_minus"]=False #使“-”正常顯示
y1 = [32,25,32,35,45,33,17,24,20,10,32,5]
y2 = [-14,-25,-18,-35,-46,-22,-18,-3,-24,-13,-25,-28]
plt.bar(range(len(y1)),y1,width=0.8,facecolor="g",edgecolor="w",label="統計量1")
plt.bar(range(len(y2)),y2,width=0.8,facecolor='r',edgecolor='w',label="統計量2")
plt.title("柱狀圖",fontsize=20)
plt.legend()
plt.show()
運行結果