數據可視化庫:1.matplotlib; 2.seabron(輔助的庫,更強大更豐富更好看); 3.Axes3D ...1.導包 1 import numpy as np 2 import pandas as pd 3 4 import matplotlib.pyplot as plt 5 6 im ...
數據可視化庫:1.matplotlib; 2.seabron(輔助的庫,更強大更豐富更好看); 3.Axes3D ...
1.導包
1 import numpy as np 2 import pandas as pd 3 4 import matplotlib.pyplot as plt 5 6 import seaborn as sns 7 8 #去除執行當中報警告提示的庫 9 import warnings 10 warnings.filterwarnings("ignore") 11
2.圖形初始化設置
1 # 全局樣式,style樣式,use使用figure身材,figsize(x,y)大小,單位是英寸 2 plt.style.use({'figure.figsize':(20,10)}) 3 4 # 顯示問題衝突 5 plt.show() # 強制顯示 6 7 #在pycharm中使用,圖片列印不出來的時候,使用魔法方法,在行里顯示,只能在jupyter中使用 8 %matplotlib inline 9 10 #國外的庫都不支持中文 11 from pylab import mpl # 使得預設支持中文 需要引入pylab庫中的mpl 12 mpl.rcParams['font.sans-serif'] = ['SimHei'] # 設置字體 13 mpl.rcParams['axes.unicode_minus'] = False
3.seaborn庫基本設置
1 sns.set_style('darkgrid') # sns設置背景顏色 white(預設) dark暗色 darkgrid暗網 2 3 sns.set_style() # 設置樣式 4 5 sns.set_context('paper') # 控制刻度 6 7 # 調色板 8 sns.color_palette() # 設置顏色 9 sns.set_palette() # 設置顏色 10 sns.palplot() # 顯示顏色,在數據可視化中,帶有plot的都是顯示作用 11 12 # h=0.01, l=0.6 (亮度), s=0.65(飽和度)
13 # 調色板 cool hot rainbow hls spring...
14 Sns.palplot(sns.color_palette(‘hls’,7))
線性圖:plt.plot(x,y)
x 表示x軸數據點,y 表示y軸數據點
網格線:plt.grid(color='black',axis='both',alpha=0.3)
color顏色;alpha 透明度 ;axis軸,x或y。
坐標界限:plt.axis('auto') 隨著橫縱坐標軸的數據自動設置
plt.axis([-15,15,-5,5]) 表示x軸界限是【-15,15】,y軸界限是【-5,5】
取消樣式:plt.axis('off')
標題:plt.title()
plt.title('this is sun!')
x軸的標記:xlabel()
plt.xlabel('X',fontsize=20,color='orange')
y軸的標記:ylabel()
plt.ylabel('f(x)',fontsize=20,color='cyan',rotation=0) # rotation角度,f(x)旋轉90度
設置圖例: plt.legend()
註意:畫圖的時候指定好圖例名字才有效,如 label='top'
指定圖例的位置:loc參數
plt.legend(loc=0):loc=0代表最適合的位置,電腦自動識別
plt.legend(loc=[0,1]):表示在圖片的左上角,將圖例放在畫布的外面,是x或者y的倍數 ,這裡是x的0倍 y的1倍
設置圖片大小(局部的)
plt.figure(figsize=(20,10))
點 ,線,顏色的屬性
線 linestyle:(簡寫ls), ①:②-- ③-.④-
寬度 linewidth:(簡寫lw)
字體 fontsize:(單位px)
透明度 alpha :百分比
角度 rotation
點 marker: o(圓點) s(方形) p(五邊形) d(小菱形) 1 2 3 4 8(八邊)'*'
點顏色color:c
點的大小 markersize
點邊緣的寬度 markeredgewidth
點邊緣面的顏色 markeredgecolor
點中間面的顏色 markerfacecolor
1 plt.plot(x,y,label='top',ls=':',lw=3,c='c',marker=1,markersize=100) 2 3 plt.plot(x,-y,label='bottom',ls='--',lw=2,marker='s',markersize=7,color='#0FF0FFF0') 4 5 plt.axis('equal')
更換刻度
1 x = np.arange(10) 2 y = x + 10 3 plt.plot(x,y,c='orange',lw=10,marker='o',markersize=100,markerfacecolor='r',markeredgecolor='g',markeredgewidth=10) 4 5 #第一個參數是坐標的範圍 第二格參數是要替換的字元 映射 6 plt.xticks(np.arange(0,9),list('abcdefghi'),fontsize=20) 7 plt.yticks(np.arange(0,9),list('abcdefghi'),fontsize=20)
plt 中的實體標識 :碰到特殊符號不好列印的時候 如pi(3.14)
1 # subplot代表的是畫布 2 axes = plt.subplot() 3 4 # 畫布中的用axes調用 5 axes.set_xticks([-pi,-pi/2,0,pi/2,pi]) 6 axes.set_xticklabels(['-$\pi$','-$\pi$/2','0','$\pi$/2','$\pi$'],fontsize=20,color='orange',rotation=30) 7 8 axes.set_yticks([-1,0,1]) 9 axes.set_yticklabels(['min',0,'max'],fontsize=20,color='orange',rotation=30) 10 11 # 畫布中設置標題 12 axes.set_title('abc')
直方圖 plt.hist()
1 # 針對一維數據進行統計的,統計出現次數 2 a = np.random.randint(0,10,10) 3 a # 得到 array([8, 3, 2, 3, 5, 3, 4, 5, 6, 1]) 4 plt.hist(a,bins=20) # bins 調節直方的寬度 5 6 # seabron當中的直方圖 7 sns.distplot(a,bins=20,color='r')
柱狀圖plt.barh()
描述的是二維數據的
matplotlib裡面的柱狀圖,縱向的:plt.bar(X,Y)
matplotlib裡面的柱狀圖,橫向的:plt.barh(X,Y)
seabron裡面的柱狀圖(推薦使用),hue匹配條件
1 sns.barplot(data=titanic,x='sex',y='survived',hue='class')
餅圖 plt.pie()
1 plt.figure(figsize=(14,8)) 2 gdp = np.array([2794696,20513000,2689992,13457267,5070626,4029140,2808899]) 3 label=['fr','usa','ind','ch','jp','ge','uk'] 4 5 explode = [0,0,0.1,0,0,0,0.2] # 圖片分離ind uk 6 # textprops={'fontsize':30} 設置字體大小 7 plt.pie(gdp,labels=label,textprops={'fontsize':30},explode=explode,colors=sns.color_palette('hls',7)) 9 10 plt.axis('equal')
箱圖plt.boxplot()
主要是檢查數據的分佈,查看異常值
plt.boxplot(data)
使用seabron畫的箱圖
sns.boxplot(data)
散佈圖(散點圖)plt.scatter()
主要作用:查看數據的分佈情況 越亂的數據越不利於做機器學習
1 # 使用sns里的鳶尾花數據集 2 iris = sns.load_dataset('iris') 3 4 plt.scatter(iris.iloc[:,0],iris.iloc[:,1],c=target,cmap='rainbow') # c=target會自動給每種類別分配顏色的,使用seabron裡面自帶的鳶尾花數據集 5 6 # seabron中的散佈圖 7 # 1.散步密度圖 8 sns.jointplot(data=iris,x='sepal_length',y='sepal_width',color='orange',kind='hex') # kind:{"scatter"|"reg"|"resid"|"kde"|"hex"}散點|帶有回歸的線|帶有回歸的線(考慮到行了)|密度圖(像遙感)|六角形 9 10 # 2.回歸散佈圖 11 sns.regplot(data=iris,x='sepal_length',y='sepal_width') # 擬合曲線 根據花萼的 沒有什麼規律 12 13 sns.regplot(data=iris,x='petal_length',y='petal_width',) # 根據花瓣的回歸散佈圖,比較有線性規律 14 15 # 3.線性分類散佈圖 16 sns.lmplot(data=iris,x='petal_length',y='petal_width',hue='species',markers=['o','x','d']) # 每一種的趨勢單獨的預測出;hue='species'條件,根據種類;markers=['o','x','d'] 點的形狀 圓 x 棱形 17 18 # 4.散佈圖矩陣 19 sns.pairplot(data=iris,hue='species',kind='scatter',diag_kind='auto') # diag_kind : {'hist', 'kde'},對角線上圖形類型的選擇 hist直方圖 kde 密度圖
3D圖形
1 # 繪製3D圖 2 from mpl_toolkits.mplot3d.axes3d import Axes3D # 引入3d庫 3 fig = plt.figure(figsize=(16,10)) 4 5 #實例化Axes3D 6 axes3d = Axes3D(fig) 7 8 #調用對象scatter3D 9 axes3d.scatter3D(iris.iloc[:,0],iris.iloc[:,1],iris.iloc[:,2],c=target,s=60,cmap='hot') 10 11 # 保存 12 plt.savefig('sca.png',dpi=100)