python可視化界面怎么做?

界面設(shè)計

作者:候暉 發(fā)布:2023-05-15 17:35 425瀏覽

回答 共1個


本文所演示的的可視化方法

散點圖 (Scatterplot)

直方圖 (Histogram)

小提琴圖 (Violinplot)

特征兩兩對比圖(Pairplot)

安德魯斯曲線 (Andrews curves)

核密度圖 (Kernel density estimation plot)

平行坐標(biāo)圖 (Parallel coordinates)

Radviz (力矩圖?)

熱力圖 (Heatmap)

氣泡圖 (Bubbleplot)

這里主要使用Python一個流行的作圖工具: Seaborn library,同時Pandas和bubbly輔助。為什么Seaborn比較好?

因為很多時候數(shù)據(jù)分析,建模前,都要清洗數(shù)據(jù),清洗后數(shù)據(jù)的結(jié)果總要有個格式,我知道的最容易使用,最方便輸入模型, 最好畫圖的格式叫做\"Tidy Data\" (Wickham H. Tidy data[J]. Journal of Statistical Software, 2014, 59(10): 1-23.) 其實很簡單,Tidy Data格式就是:

每條觀察(記錄)自己占一行

觀察(記錄)的每個特征自己占一列

舉個例子,我們即將作圖的數(shù)據(jù)集IRIS就是Tidy Data(IRIS(IRIS數(shù)據(jù)集)_百度百科):

Iris數(shù)據(jù)集是常用的分類實驗數(shù)據(jù)集,由Fisher, 1936收集整理。Iris也稱鳶尾花卉數(shù)據(jù)集,是一類多重變量分析的數(shù)據(jù)集。數(shù)據(jù)集包含150個數(shù)據(jù)集,分為3類,每類50個數(shù)據(jù),每個數(shù)據(jù)包含4個屬性??赏ㄟ^花萼長度,花萼寬度,花瓣長度,花瓣寬度4個屬性預(yù)測鳶尾花卉屬于(Setosa,Versicolour,Virginica)三個種類中的哪一類。

該數(shù)據(jù)集包含了5個屬性:

Sepal.Length(花萼長度),單位是cm;

Sepal.Width(花萼寬度),單位是cm;

Petal.Length(花瓣長度),單位是cm;

Petal.Width(花瓣寬度),單位是cm;

種類:Iris Setosa(山鳶尾)、Iris Versicolour(雜色鳶尾),以及Iris Virginica(維吉尼亞鳶尾)。

IRIS數(shù)據(jù)

可以看到,每條觀察(ID=0,1,2...)自己占一行,每個特征(四個部位長/寬度,種類)自己占一列。Seaborn就是為Tidy Data設(shè)計的,所以方便使用。

所以這個數(shù)據(jù)集有6列,6個特征,很多時候做可視化就是為了更好的了解數(shù)據(jù),比如這里就是想看每個種類的花有什么特點,怎么樣根據(jù)其他特征把花分為三類。我個人的喜好是首先一張圖盡量多的包含數(shù)據(jù)點,展示數(shù)據(jù)信息,從中發(fā)現(xiàn)規(guī)律。我們可以利用以下代碼完全展示全部維度和數(shù)據(jù)這里用的bubbly:

三維圖,全局觀察

Python做出來,其實是一張可以拖動角度,放大縮小的圖,拖一拖看各角度視圖會發(fā)現(xiàn)三類還是分的挺明顯的。Github上這個bubbly還是很厲害的,方便。

接下來開始做一些基礎(chǔ)的可視化,沒有用任何修飾,代碼只有最關(guān)鍵的畫圖部分,可視化作為比賽的一個基礎(chǔ)和開端,個人理解做出的圖能看就行,美不美無所謂,不美也不扣分。因為

散點圖,可以得到相關(guān)性等信息,比如基本上SepalLengthCm越大,SepalWidthCm越大

散點圖

使用Jointplot, 看兩個變量的分布,KDE圖,同時展示對應(yīng)的數(shù)據(jù)點

就像上一篇說的,比賽中的每個環(huán)節(jié)都至關(guān)重要,很有必要看下這些分布直方圖,kde圖,根據(jù)這些來處理異常值等,這里請教,為什么畫了直方圖還要畫KDE??我理解說的都是差不多的東西。

關(guān)于KDE:\"由于核密度估計方法不利用有關(guān)數(shù)據(jù)分布的先驗知識,對數(shù)據(jù)分布不附加任何假定,是一種從數(shù)據(jù)樣本本身出發(fā)研究數(shù)據(jù)分布特征的方法,因而,在統(tǒng)計學(xué)理論和應(yīng)用領(lǐng)域均受到高度的重視。\"

無論如何,我們先畫直方圖,再畫KDE

直方圖KDE 圖

這里通過KDE可以說,由于Setosa的KDE與其他兩種沒有交集,直接可以用Petailength線性區(qū)分Setosa與其他兩個物種。

Pairplot

箱線圖,顯示一組數(shù)據(jù)分散情況的統(tǒng)計圖。形狀如箱子。主要用于反映原始數(shù)據(jù)分布的特征,關(guān)鍵的5個黑線是最大值、最小值、中位數(shù)和兩個四分位數(shù)。在判斷異常值,處理異常值時候有用。

BoxPlot

小提琴圖

Violinplot

這個Andrews curves很有趣,它是把所有特征組合起來,計算個值,展示該值,可以用來確認(rèn)這三個物種到底好不好區(qū)分,維基百科的說法是“If there is structure in the data, it may be visible in the Andrews' curves of the data.”(Andrews plot - Wikipedia)

Andrews' curvesradviz

Radviz可視化原理是將一系列多維空間的點通過非線性方法映射到二維空間的可視化技術(shù),是基于圓形平行坐標(biāo)系的設(shè)計思想而提出的多維可視化方法。圓形的m條半徑表示m維空間,使用坐標(biāo)系中的一點代表多為信息對象,其實現(xiàn)原理參照物理學(xué)中物體受力平衡定理。 多維空間的點映射到二維可視空間的位置由彈簧引力分析模型確定。 (Radviz可視化原理 - CSDN博客) ,能展示一些數(shù)據(jù)的可區(qū)分規(guī)律。

數(shù)值是皮爾森相關(guān)系數(shù),淺顏色表示相關(guān)性高,比如Petal.Length(花瓣長度)與 Petal.Width(花瓣寬度)相關(guān)性0.96,也就是花瓣長的花,花瓣寬度也大,也就是個大花。

不過,現(xiàn)在做可視化基本上不用python了,具體為什么可以去看我的寫的文章,我拿python做了爬蟲,BI做了可視化,效果和速度都很好。

finereport

可視化的一大應(yīng)用就是數(shù)據(jù)報表,而FineReport可以自由編寫整合所需要的報表字段進行報表輸出,支持定時刷新和監(jiān)控郵件提醒,是大部分互聯(lián)網(wǎng)公司會用到的日常報表平臺。

尤其是公司體系內(nèi)經(jīng)營報表,我們用的是商業(yè)報表工具,就是finereport。推薦他是因為有兩個高效率的點:①可以完成從數(shù)據(jù)庫取數(shù)(有整合數(shù)據(jù)功能)—設(shè)計報表模板—數(shù)據(jù)展示的過程。②類似excel做報表,一張模板配合參數(shù)查詢可以代替幾十張報表。

FineBI

簡潔明了的數(shù)據(jù)分析工具,也是我個人最喜歡的可視化工具,優(yōu)點是零代碼可視化、可視化圖表豐富,只需要拖拖拽拽就可以完成十分炫酷的可視化效果,擁有數(shù)據(jù)整合、可視化數(shù)據(jù)處理、探索性分析、數(shù)據(jù)挖掘、可視化分析報告等功能,更重要的是個人版免費。

主要優(yōu)點是可以實現(xiàn)自助式分析,而且學(xué)習(xí)成本極低,幾乎不需要太深奧的編程基礎(chǔ),比起很多國外的工具都比較易用上手,非常適合經(jīng)常業(yè)務(wù)人員和運營人員。在綜合性方面,F(xiàn)ineBI的表現(xiàn)比較突出,不需要編程而且簡單易做,能夠?qū)崿F(xiàn)平臺展示,比較適合企業(yè)用戶和個人用戶,在數(shù)據(jù)可視化方面是一個不錯的選擇;

這些是我見過比較常用的,對數(shù)據(jù)探索有幫助的可視化方法。

這個非常簡單,PyQt就可以輕松實現(xiàn),一個基于Qt的接口包,可以直接拖拽控件設(shè)計UI界面,下面我簡單介紹一下這個包的安裝和使用,感興趣的朋友可以自己嘗試一下:

1.首先,安裝PyQt模塊,這個直接在cmd窗口輸入命令“pip install pyqt5”就行,如下,整個模塊比較大,下載過程需要等待一會兒,保持聯(lián)網(wǎng):

2.安裝完成后,我們就可以直接打開Qt自帶的Qt Designer設(shè)計師設(shè)計界面了,這里默認(rèn)會安裝到site-packages->PyQt5->Qt->bin目錄,打開后的界面如下,可以直接新建對話框等窗口,所有的控件都可以直接拖拽,編輯屬性,非常方便:

3.這里我簡單的設(shè)計了一個登錄窗口,2個輸入框和2個按鈕,如下,這里可以直接使用QSS對界面進行美化(設(shè)置styleSheet屬性即可),類似網(wǎng)頁的CSS,如果你有一定的前端基礎(chǔ),那么美化起來會非常容易:

設(shè)計完成后,還只是一個ui文件,不是現(xiàn)成的Python代碼,還需要借助pyuic5工具(也在bin目錄下)才能將ui文件轉(zhuǎn)化為Python代碼,切換到ui文件所在目錄,輸入命令“pyuic5 -o login.py login.ui”即可(這里替換成你的ui文件),轉(zhuǎn)化成功后的Python代碼如下(部分截圖):

還需要在最下面添加一個main函數(shù),創(chuàng)建上面Ui_Form類對象顯示窗口即可,如下:

最后點擊運行程序,效果如下,和剛才設(shè)計的界面效果一模一樣:

至此,我們就完成了利用Python的PyQt模塊直接拖拽控件來設(shè)計UI界面??偟膩碚f,整個過程非常簡單,只要你有一定的Python基礎(chǔ),熟悉一下操作過程,很快就能掌握的,當(dāng)然,還有許多其他UI開發(fā)模塊,像tkinter,wxPython,Eric6等,也都非常不錯,網(wǎng)上也有相關(guān)教程和資料,介紹的非常詳細(xì),感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

首先,如果沒有安裝python和PyQt軟件的請先直接搜索下載并安裝。python是一個開源軟件,因此都是可以在網(wǎng)上免費下載的,最新版本即可。下載完成后,我們先打開PyQt designer。

2

打開后,首先是一個默認(rèn)的新建窗口界面,在這里我們就選擇默認(rèn)的窗口即可。

3

現(xiàn)在是一個完全空白的窗口。第一步我們要先把所有的設(shè)計元素都拖進這個窗口。我們先拖入一個“Label”,就是一個不可編輯的標(biāo)簽。

隨后我們再拖入一個可以編輯的“Line Edit”

最后我們拖入最后一個元素:“PushButton”按鈕,也就是平時我們所點的確定。

目前我們已經(jīng)把所有所需要的元素都拖入了新建的窗口。對于每一個元素,我們都可以雙擊進行屬性值的修改,此時我們僅需要雙擊改個名字即可

此時我們已經(jīng)完成了一半,接下來需要對動作信號進行操作。我們需要先切入編輯信號的模式

此時把鼠標(biāo)移動到任意元素,都會發(fā)現(xiàn)其變成紅色,代表其被選中。

當(dāng)我們選中pushbutton后,繼續(xù)拖動鼠標(biāo)指向上面的line edit,會發(fā)現(xiàn)由pushbutton出現(xiàn)一個箭頭指向了line edit,代表pushbutton的動作會對line edit進行操作。

隨即會彈出一個配置連接窗口。左邊的是pushbutton的操作,我們選擇clicked(),即點擊pushbutton。

右邊是對line edit的操作,我們選擇clear(),即清楚line edit中的內(nèi)容。

最后我們點擊確定。

保存完成后,我們在PyQt中的操作就已經(jīng)完成了。保存的文件名我們命名為test,PyQt生成的設(shè)計文件后綴是.ui。

14贊同

2023-05-15 17:56:26

推薦閱讀 RECOMMENDED READING