matplotlib一維散點(diǎn)分布圖的實(shí)現(xiàn)
引言
本次的目標(biāo)是繪制數(shù)據(jù)的一維散點(diǎn)分布圖,應(yīng)用場(chǎng)景是數(shù)據(jù)一維標(biāo)簽的聚類可視化,假定我們擁有原始的帶標(biāo)簽數(shù)據(jù) ( X , y ) (X,y) (X,y)其中 X X X為樣本特征矩陣, y y y為對(duì)應(yīng)樣本的標(biāo)簽(連續(xù)值),通過聚類算法得到了 X X X的偽分類標(biāo)簽 y ^ , y ^ ∈ ( 1 , 2 , . . . , N ) \hat{y}, \hat{y}\in(1,2,...,N) y^?,y^?∈(1,2,...,N),想要繪制出相同類別樣本在標(biāo)簽值是否同樣是集中的。
值得注意的是,由于我們可能獲得多類樣本,因此僅僅使用一張圖來(lái)進(jìn)行繪制可能會(huì)使得不同類別樣本的marker在圖上相互重疊,因此需要為每一類樣本單獨(dú)繪制一維散點(diǎn)分布圖,并在同一張畫布上顯示。
方法
為了顯示一維的單張散點(diǎn)分布圖,我們需要對(duì)matplotlib默認(rèn)的二維畫布進(jìn)行調(diào)整,將其余三條軸線都設(shè)置為不可見,只保留底部的軸線,進(jìn)一步的,要把縱軸label的位置向圖左端移動(dòng)(否則在橫軸包括負(fù)半軸時(shí),label會(huì)出現(xiàn)在圖中央),實(shí)例代碼如下:
axs.spines['top'].set_visible(False) axs.spines['right'].set_visible(False) axs.spines['left'].set_visible(False) axs.yaxis.set_ticks_position('left') axs.set_xlim((-0.05,1.05)) axs.set_ylim((0,1)) axs.set_yticks([0],labels=['score'])
對(duì)于多張一維散點(diǎn)圖的繪制,只需要利用subplot函數(shù),對(duì)子圖重復(fù)進(jìn)行上述操作即可。整體代碼如下:
def score_distr(group,x_lim=(-0.1,1.1),y_lim=(-0.1,1.1)): ''' 可視化N個(gè)類別中每個(gè)樣本的y分布 :param group: List[np.ndarray], N類樣本標(biāo)簽y組成的數(shù)組 :param x_lim: 橫坐標(biāo)區(qū)間 :param y_lim: 縱坐標(biāo)區(qū)間 :return: ''' group_num=len(group) color_map=["violet","tomato","cyan","salmon","limegreen"] fig,axs=plt.subplots(group_num,1) dem_labels=[] for i in range(group_num): axs[i].scatter(group[i],[0.05]*group[i].shape[0],label="class_"+str(i),c=color_map[i]) # axs[i].xlim(x_lim) dem_labels.append("class_"+str(i)) axs[i].spines['top'].set_visible(False) axs[i].spines['right'].set_visible(False) axs[i].spines['left'].set_visible(False) axs[i].yaxis.set_ticks_position('left') axs[i].set_xlim(x_lim) axs[i].set_ylim(y_lim) axs[i].set_yticks([0],labels=['score']) fig.legend(dem_labels,loc=(0.45,0.85))
測(cè)試結(jié)果
給出示例代碼及對(duì)應(yīng)結(jié)果如下:
test=[] for i in range(3): test.append(np.random.rand(15)) score_distr(test,x_lim=(-1.05,1.05))
結(jié)果:
參考
可視化: Python—MatPlotLib—一維散點(diǎn)圖
到此這篇關(guān)于matplotlib一維散點(diǎn)分布圖的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)matplotlib一維散點(diǎn)分布圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python學(xué)習(xí)之matplotlib繪制散點(diǎn)圖實(shí)例
- Python+matplotlib繪制不同大小和顏色散點(diǎn)圖實(shí)例
- Python?Matplotlib實(shí)現(xiàn)三維數(shù)據(jù)的散點(diǎn)圖繪制
- 使用matplotlib中scatter方法畫散點(diǎn)圖
- Python利用matplotlib繪制散點(diǎn)圖的新手教程
- Python使用Matplotlib繪制三維散點(diǎn)圖詳解流程
- python3使用matplotlib繪制散點(diǎn)圖
- Python matplotlib繪制散點(diǎn)圖的實(shí)例代碼
- 使用matplotlib畫散點(diǎn)圖的方法
相關(guān)文章
Python 格式化打印json數(shù)據(jù)方法(展開狀態(tài))
今天小編就為大家分享一篇Python 格式化打印json數(shù)據(jù)方法(展開狀態(tài)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-02-02實(shí)操Python爬取覓知網(wǎng)素材圖片示例
大家好,本篇文章介紹的是實(shí)操Python爬取覓知網(wǎng)素材圖片示例,感興趣的朋友趕快來(lái)看一看吧,對(duì)你有用的話記得收藏起來(lái),方便下次瀏覽2021-11-11通過PHP與Python代碼對(duì)比的語(yǔ)法差異詳解
這篇文章主要介紹了通過PHP與Python代碼對(duì)比淺析語(yǔ)法差異,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Python中實(shí)現(xiàn)地圖可視化的方法小結(jié)
Python提供了多個(gè)強(qiáng)大的庫(kù),如Folium、Matplotlib、Geopandas等,使得創(chuàng)建漂亮而具有信息量的地圖變得簡(jiǎn)單而靈活,本文將詳細(xì)介紹如何使用這些庫(kù)繪制漂亮的地圖,感興趣的可以了解下2023-12-12Python-OpenCV中的cv2.inpaint()函數(shù)的使用
大多數(shù)人會(huì)在家里放一些舊的退化照片,上面有一些黑點(diǎn),一些筆畫等。你有沒有想過恢復(fù)它?本文就來(lái)介紹一下方法,感興趣的可以了解一下2021-06-06Python實(shí)現(xiàn)計(jì)算AUC的示例代碼
AUC(Area?under?curve)是機(jī)器學(xué)習(xí)常用的二分類評(píng)測(cè)手段,直接含義是ROC曲線下的面積。本文將利用Python語(yǔ)言實(shí)現(xiàn)計(jì)算AUC,感興趣的可以學(xué)習(xí)一下2022-07-07python實(shí)現(xiàn)的簡(jiǎn)單FTP上傳下載文件實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)的簡(jiǎn)單FTP上傳下載文件的方法,實(shí)例分析了Python基于FTP模塊實(shí)現(xiàn)文件傳輸?shù)募记?需要的朋友可以參考下2015-06-06python數(shù)據(jù)處理之如何選取csv文件中某幾行的數(shù)據(jù)
這篇文章主要給大家介紹了關(guān)于python數(shù)據(jù)處理之如何選取csv文件中某幾行的數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09