Python數(shù)據(jù)可視化編程通過Matplotlib創(chuàng)建散點(diǎn)圖代碼示例
Matplotlib簡(jiǎn)述:
Matplotlib是一個(gè)用于創(chuàng)建出高質(zhì)量圖表的桌面繪圖包(主要是2D方面)。該項(xiàng)目是由JohnHunter于2002年啟動(dòng)的,其目的是為Python構(gòu)建一個(gè)MATLAB式的繪圖接口。如果結(jié)合PythonIDE使用比如PyCharm,matplotlib還具有諸如縮放和平移等交互功能。它不僅支持各種操作系統(tǒng)上許多不同的GUI后端,而且還能將圖片導(dǎo)出為各種常見的矢量(vector)和光柵(raster)圖:PDF、SVG、JPG、PNG、BMP、GIF等。此外,matplotlib還有許多插件工具集,如用于3D圖形的mplot3d以及用于地圖和投影的basemap。
準(zhǔn)備數(shù)據(jù):從文本文件中解析數(shù)據(jù)
本文使用的數(shù)據(jù)主要包含以下三種特征:每年獲得的飛行??屠锍虜?shù),玩視頻游戲所耗時(shí)間百分比,每周消費(fèi)的冰淇淋公升數(shù)。其中分類結(jié)果作為文件的第四列,并且只有3、2、1三種分類值。
| 飛行里程數(shù) | |
|
|
| |
|
|
|
| |
|
|
|
| |
|
|
|
| ...... | |
|
|
上述特征數(shù)據(jù)的格式經(jīng)過file2matrix函數(shù)解析處理之后,可輸出為矩陣和類標(biāo)簽向量。
將文本記錄轉(zhuǎn)換為Numpy的解析程序:

使用file2matrix讀取文件數(shù)據(jù),必須確保待解析文件存儲(chǔ)在當(dāng)前的工作目錄中。導(dǎo)入數(shù)據(jù)之后,簡(jiǎn)單檢查一下數(shù)據(jù)格式:

分析數(shù)據(jù):使用Matplotlib創(chuàng)建散點(diǎn)圖
編輯kNN.py文件,引入matplotlib,調(diào)用matplotlib的scatter繪制散點(diǎn)圖。
import matplotlib
import matplotlib.pyplot as plt
def file2matrix(filename):
......
return returnMat,classLabelVector
datingDataMat,datingLabels = file2matrix('datingTestSet2.txt')
fig = plt.figure()
ax = fig.add_subpot(111)
ax.scatter(datingDataMat[:,1],datingDataMat[:,2])
plt.show()
散點(diǎn)圖使用datingDataMat矩陣的第二、第三列數(shù)據(jù),分別表示特征值“玩視頻游戲所耗時(shí)間百分比”和“每周消費(fèi)的冰淇淋公升數(shù)”。

上圖由于沒有使用樣本分類的特征值,很難看到任何有用的數(shù)據(jù)模式信息。為了更好理解數(shù)據(jù)信息,Matplotlib庫提供的scatter函數(shù)支持個(gè)性化標(biāo)記散點(diǎn)圖上的點(diǎn)。調(diào)用scatter函數(shù)使用下列參數(shù):
ax.scatter(datingDataMat[:,1],datingDataMat[:,2],15.0*array(datingLabels),15.0*array(datingLabels)) plt.show()

上圖利用datingLabels存儲(chǔ)的類標(biāo)簽屬性,在散點(diǎn)圖上繪制了色彩不等、尺寸不同的點(diǎn)。因而基本上可以從圖中看到數(shù)據(jù)點(diǎn)所屬三個(gè)樣本分類的區(qū)域輪廓。為了得到更好的效果,采用datingDataMat矩陣的屬性列1和2展示數(shù)據(jù),并以紅色的'*'表示類標(biāo)簽1、藍(lán)色的'o'表示表示類標(biāo)簽2、綠色的'+'表示類標(biāo)簽3,修改參數(shù)如下:
import numpy as np ...... datingLabels = array(datingLabels) idx_1 = np.where(datingLabels==1) p1 = ax.scatter(datingDataMat[idx_1,0],datingDataMat[idx_1:,1],market = '*',color = 'r',label='1',s=20 idx_2 = np.where(datingLabels==2) p2 = ax.scatter(datingDataMat[idx_2,0],datingDataMat[idx_2:,1],market = 'o',color ='b',label='1',s=10 idx_3 = np.where(datingLabels==3) p3 = ax.scatter(datingDataMat[idx_3,0],datingDataMat[idx_3:,1],market = '+',color ='g',label='1',s=30 plt.legend(loc = 'upper right') plt.show()

總結(jié)
本文簡(jiǎn)單介紹了Matplotlib,并以實(shí)例分析了如何使用Matplotlib庫圖形化展示數(shù)據(jù),最后通過修改matplotlib的scatter函數(shù)參數(shù)使得散點(diǎn)圖的分類區(qū)域更加清晰。
希望對(duì)大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- 通過python的matplotlib包將Tensorflow數(shù)據(jù)進(jìn)行可視化的方法
- Python數(shù)據(jù)可視化教程之Matplotlib實(shí)現(xiàn)各種圖表實(shí)例
- python Matplotlib數(shù)據(jù)可視化(1):簡(jiǎn)單入門
- python Matplotlib數(shù)據(jù)可視化(2):詳解三大容器對(duì)象與常用設(shè)置
- Python數(shù)據(jù)可視化之用Matplotlib繪制常用圖形
- python數(shù)據(jù)可視化之matplotlib.pyplot基礎(chǔ)以及折線圖
- Python 數(shù)據(jù)可視化之Matplotlib詳解
- Python利用matplotlib模塊數(shù)據(jù)可視化繪制3D圖
- Python數(shù)據(jù)可視化之使用matplotlib繪制簡(jiǎn)單圖表
- Python數(shù)據(jù)分析應(yīng)用之Matplotlib數(shù)據(jù)可視化詳情
相關(guān)文章
使用Python實(shí)現(xiàn)一個(gè)優(yōu)雅的異步定時(shí)器
在 Python 中實(shí)現(xiàn)定時(shí)器功能是一個(gè)常見需求,尤其是在需要周期性執(zhí)行任務(wù)的場(chǎng)景下,本文給大家介紹了基于 asyncio 和 threading 模塊,可擴(kuò)展的異步定時(shí)器實(shí)現(xiàn),需要的朋友可以參考下2025-04-04
Python趣味挑戰(zhàn)之教你用pygame畫進(jìn)度條
pygame四種方法教會(huì)你畫進(jìn)度條,其實(shí)也不難,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05
Pandas把dataframe或series轉(zhuǎn)換成list的方法
這篇文章主要介紹了Pandas把dataframe或series轉(zhuǎn)換成list的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
使用pycharm+conda配置虛擬環(huán)境的詳細(xì)步驟
這篇文章主要介紹了使用pycharm創(chuàng)建新的項(xiàng)目環(huán)境并使用conda進(jìn)行配置和使用pycharm引用已有的conda虛擬環(huán)境,文中通過圖文結(jié)合的方式介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
Python 類與元類的深度挖掘 I【經(jīng)驗(yàn)】
super() 方法解決了類->實(shí)例實(shí)踐過程中關(guān)于命名空間的一些問題,而關(guān)于生成對(duì)象的流程,我們知道初始化實(shí)例是通過類的 __init__() 方法完成的,在此之前可能涉及到一些其它的準(zhǔn)備工作,包括接下來提到的 mro() 方法以及關(guān)鍵的元類->類的過程2016-05-05

