關於使用python seaborn庫繪制violinplot小提琴圖的一些小坑


 

 

Seaborn是基於matplotlib的Python可視化庫。 它提供了一個高級界面來繪制有吸引力的統計圖形。Seaborn其實是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,不需要經過大量的調整就能使你的圖變得精致。

這里的難點是我想完成小提親圖的hue分類,這一點必須在seaborn庫的violinplot函數中,將hue設置為你想要作為區分的類別,同時split參數設置為True:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import xlrd


tips = pd.read_excel('volin2.xlsx')
sns.violinplot(x= "class",y="score",data=tips,
hue="weighted",
split=True,
linewidth = 2, #線寬
width = 0.8, #箱之間的間隔比例
palette = 'muted', #設置調色板
order = ['Math' , 'Art' , 'Music' , 'Stories', 'Animations','Games'], #篩選類別
# scale = 'count', #測度小提琴圖的寬度: area-面積相同,count-按照樣本數量決定寬度,width-寬度一樣
gridsize = 50, #設置小提琴圖的平滑度,越高越平滑
# inner = 'box', #設置內部顯示類型 --> 'box','quartile','point','stick',None
#bw = 0.8 #控制擬合程度,一般可以不設置
)
plt.show()

直接上了代碼,這里我的數據是一個excel表格,有一個很坑的點是,seaborn官方引入數據的方式是使用tips = sns.load_dataset('tips')語句,其中tips竟然是他內置的一個數據集,這也太坑了。
通過查資料,最后確定是導入數據的方式是使用pandas庫:
tips = pd.read_excel('volin2.xlsx'),一句話解決。
我的數據集大概是3行,這里一定要將數據集調整成violinplot可以接受的格式:

三列分別是作品類別,作品分數,和作品是否被加權,最后小提琴圖再細分的依據就是作品是否被加權

最后代碼效果如下:

這里有一個巨坑,網上所有的教程,在篩選類別的時候,都是使用的大括號{ },這會導致下面的math,art等等6類的順序在每次運行時候發生隨機的變化!

修改成:

 order = ['Math' , 'Art' , 'Music' , 'Stories', 'Animations','Games'], #篩選類別

使用中括號,解決這個問題。

 

還有一個大坑就是圖的導出,如果需要得到清晰度高的pdf文件,需要在cmd中運行這個程序,但是在cmd運行的時候出現了一個困擾我一個半小時的問題!提示我缺包,但是在pycharm中是不缺的。

網上教程一大堆,大致都是說在cmd找包的方式和ide不一樣,但是所有方法全部試過,通通不適用。

最后我的方法是:在cmd中,使用pip安裝提示缺的包:python -m install XX

缺啥安裝啥,最后成功之后,彈出結果圖,保存為pdf文件,大功告成。

這里使用python3是因為我python2和3都有安裝的原因。

 

 
        
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM