关于使用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都有安装的原因。

 

猜你喜欢

转载自www.cnblogs.com/xc-123456/p/11096964.html
今日推荐