、
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都有安裝的原因。