python中常用的数据图形化库有matplotlib,seaborn,plotnine以及pandas自带的图形化功能等(目前我接触的)。在这几种图形化中,pandas自带的库图形简单,matplotlib需要调试的参数过多,seaborn基于matplotlib,但是学习难度远小于matplotlib,可以作为学习的首选图形化库。
以下为我个人常用的几种图形
基本图形
1.条形图
seaborn输入参数基本所有的图形输入类型是一致的,设置输入的横坐标的数据即x=“列名”,y=列名,用于分类的数据hue=列名,输入的数据集,及一些其他的参数。
#barplot
sns.barplot(x="XXX",y="YYY",hue="class",data=dx,palette="gist_gray_r")
palette为seaborn可以选择的调色板。有多种配色选择可以用来选择。
2.箱线图
箱线图与小提琴图一样,适合展示数据的整体分布,与数据的集中程度,箱线图还包括数据的上线四分位线,异常值等等,也可以用来比较两组数据整体的高低等。
#boxplot
sns.boxplot(x="xxx",y="YYY",hue="class",data=dx,pallette="gist_gray_r")
在数据集中数据较多的情况下,还可以选择sns.boxenplot用来展示数据分布,可以较为直观的整体数据分布。
ticks
日常使用boxplot比较多,对于boxplot,有以下几点小小的总结:
- 对于seaborn中文显示的问题
seaborn是基于matplotlib包的图形展示包,因而可以使用matplotlib设置为展示中文的模式,如下图所示:
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文显示问题-设置字体为黑体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的
- 个性化设置box图形的底色和箱线的颜色
某天的个性需求,将boxplot只显示上下四分位线,中位线,与swarmplot结果,同时需要讲边框的top和right隐去。可以通过以下的来操作
g1 = sns.boxplot(x="class",y="PG%",data=x1)
for x in g1.artists:
x.set_facecolor('white')
x.set_edgecolor('white')
g1.set(xlabel="")
g1.spines['right'].set_visible(False)
g1.spines['top'].set_visible(False)
最后得到图形如下所示,显得比较简单直接。
- 图形展示风格设置
searborn中有5种作图风格可以供选择,分别为white, dark, whitegrid, darkgrid, ticks五种(可以参考seaborn style,可以通过以下语句设置
sns.set_style("white")
seaborn中只有5个风格可供选择,而在matplotlib中则有更多的作图风格可以供我们选择,我们可以使用以上语句选择需要使用的风格(26种)具体可以参考.
matplotlib style
3.小提琴图
小提琴图是核密度图与数据分布图的结合的图形,表达图形含义与箱线图类似,可以较为直观的展示数据的分布。
# violinplot
sns.violinplot(x="XXX",y="YYY",hue="class",data=dx)
其他
此外还有一些其他的图形较为常用,swarmplot(簇状散点图),stripplot(分类散点图),scatterplot(散点图),lineplot(连线图),lmplot(拟合回归线图,可以选择回归线的幂次,如二次回归或者三次回归等)。catplot(以某一列为分类信息,分成多个图展示数据,可以选择的又boxplot等)。