可以使用Python計(jì)算機(jī)圖形學(xué)庫matplotlib來繪制SSE值與K值的函數(shù)圖像,具體步驟如下:
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)青陽免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
1. 導(dǎo)入必要的庫,例如matplotlib,numpy,scipy等。
2. 使用numpy和scipy生成k值與SSE值之間的矩陣,并將其存儲到列表中。
3. 使用matplotlib繪制輸入矩陣中包含的散點(diǎn)圖,即k值與SSE值的函數(shù)圖像。
1、plt.legendplt.legend(loc=0)#顯示圖例的位置。
2、plt.figureplt.figure(figsize=(14,6),dpi=80)#設(shè)置繪圖區(qū)域的大小和像素。
3、plt.xticksplt.xticks(new_year)#設(shè)置x軸的刻度線為new_year,new_year可以為數(shù)組。
4、plt.xlabelplt.xlabel('year')#x軸標(biāo)簽。
5、plt.plotplt.plot(number,color='blue',label="actualvalue")#將實(shí)際值的折線設(shè)置為藍(lán)色。
6、兩個圖分開fig,axes=plt.subplots(2,1,sharex=True,figsize=(10,10))。
7、畫豎直線plt.axvline(99,linestyle="dotted",linewidth=4,color='r')#99表示橫坐標(biāo)。
8、圖片保存plt.savefig('timeseries_y.jpg')。
為避免中文顯示出錯,需導(dǎo)入matplotlib.pylab庫
1.2.1 確定數(shù)據(jù)
1.2.2 創(chuàng)建畫布
1.2.3 添加標(biāo)題
1.2.4 添加x,y軸名稱
1.2.5 添加x,y軸范圍
1.2.6 添加x,y軸刻度
1.2.7 繪制曲線、圖例, 并保存圖片
保存圖片時,dpi為清晰度,數(shù)值越高越清晰。請注意,函數(shù)結(jié)尾處,必須加plt.show(),不然圖像不顯示。
繪制流程與繪制不含子圖的圖像一致,只需注意一點(diǎn):創(chuàng)建畫布。
合理調(diào)整figsize、dpi,可避免出現(xiàn)第一幅圖橫軸名稱與第二幅圖標(biāo)題相互遮蓋的現(xiàn)象.
2.2.1 rc參數(shù)類型
2.2.2 方法1:使用rcParams設(shè)置
2.2.3 方法2:plot內(nèi)設(shè)置
2.2.4 方法3:plot內(nèi)簡化設(shè)置
方法2中,線條形狀,linestyle可簡寫為ls;線條寬度,linewidth可簡寫為lw;線條顏色,color可簡寫為c,等等。
python matplotlib模塊,是擴(kuò)展的MATLAB的一個繪圖工具庫。他可以繪制各種圖形,可是最近最的一個小程序,得到一些三維的數(shù)據(jù)點(diǎn)圖,就學(xué)習(xí)了下python中的matplotlib模塊,如何繪制三維圖形。
初學(xué)者,可能對這些第三方庫安裝有一定的小問題,對于一些安裝第三方庫經(jīng)驗(yàn)較少的朋友,建議使用 Anaconda ,集成了很多第三庫,基本滿足大家的需求,下載地址,對應(yīng)選擇python 2.7 或是 3.5 的就可以了(PS:后面的demo是python2.7):
首先提醒注意,以下兩個函數(shù)的區(qū)別:
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow') #繪面1
和
ax.scatter(x[1000:4000],y[1000:4000],z[1000:4000],c='r') #繪點(diǎn)1
1、繪制3D曲面圖
# -*- coding: utf-8 -*-"""
Created on Thu Sep 24 16:17:13 2015
@author: Eddy_zheng
"""from matplotlib import pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)# 具體函數(shù)方法可用 help(function) 查看,如:help(ax.plot_surface)ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
plt.show()1234567891011121314151617181920212223
效果展示:
2、繪制三維的散點(diǎn)圖(通常用于表述一些數(shù)據(jù)點(diǎn)分布)
4a.mat 數(shù)據(jù)地址,找到4a.mat 下載即可:
# -*- coding: utf-8 -*-"""
Created on Thu Sep 24 16:37:21 2015
@author: Eddy_zheng
"""import scipy.io as sio ?
from mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as plt
mat1 = '4a.mat' #這是存放數(shù)據(jù)點(diǎn)的文件,需要它才可以畫出來。上面有下載地址data = sio.loadmat(mat1)
m = data['data']
x,y,z = m[0],m[1],m[2]
ax=plt.subplot(111,projection='3d') #創(chuàng)建一個三維的繪圖工程#將數(shù)據(jù)點(diǎn)分成三部分畫,在顏色上有區(qū)分度ax.scatter(x[:1000],y[:1000],z[:1000],c='y') #繪制數(shù)據(jù)點(diǎn)ax.scatter(x[1000:4000],y[1000:4000],z[1000:4000],c='r')
ax.scatter(x[4000:],y[4000:],z[4000:],c='g')
ax.set_zlabel('Z') #坐標(biāo)軸ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.show()123456789101112131415161718192021222324252627
效果:
上面就是學(xué)習(xí)區(qū)分了下兩個函數(shù),當(dāng)時還被小困惑了下,希望對大家有所幫助。其實(shí)里面還有好多參數(shù)設(shè)置,比如說改變顏色,包括繪制點(diǎn)圖的點(diǎn)的形狀等都是可以改變的,有需要的大家可以自己看看這個函數(shù),學(xué)習(xí)下(help(對應(yīng)的function))。
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。Eddy_zheng