内容主要介绍了python模块matplotlib即seaborn数据可视化
matplotlib模块通过import matplotlib.pyplot as plt
生成图形,如生成图形没展示,可调用plt.show()
方法展示图形;
对于颜色属性设置,既可以使用十六进制颜色表达(#7777aa'
),也可以使用颜色名称,比如绿色:green
,红色:red
,黄色:yellow
图形中如果涉及中文及数字中的负号,需要设置rcParams属性
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 如果有中文设置字体格式为微软雅黑
plt.rcParams['axes.unicode_minus'] = False # 坐标轴如果有负数,通过该参数设置
一、饼图
主要应用于离散变量,展示各个成分结构占比
1. matplotlib绘制
matplotlib绘制饼图默认如果是椭圆形,如展示位正圆形,可通过pyplot模块中的axes设置为正圆形:plt.axes(aspect='equal
)
pie(x, explode=None, labels=None, colors=None,autopct=None, pctdistance=0.6, shadow=False,labeldistance=1.1, startangle=None,radius=None, counterclock=True, wedgeprops=None,textprops=None, center=(0, 0), frame=False)
参数说明:
- x:指定绘图的数据
- explode:指定饼图某些部分的突出显示,即呈现爆炸式
- labels:为饼图添加标签说明,类似于图例说明
- colors:指定饼图的填充色,以可迭代对象传入,比如两种类型:
colors=['#999ff','#7777aa']
- autopct:自动添加百分比显示,可以采用格式化的方法显示,比如保留一位小数:
autopct='%.1f%%'
- pctdistance:设置百分比标签与圆心的距离
- shadow:是否添加饼图的阴影效果
- labeldistance:设置各扇形标签(图例)与圆心的距离
- startangle:设置饼图的初始摆放角度
- radius:设置饼图的半径大小
- counterclock:是否让饼图按逆时针顺序呈现
- wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等
- textprops:设置饼图中文本的属性,如字体大小、颜色等
- center:指定饼图的中心点位置,默认为原点
- frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置
样例:
import matplotlib.pyplot as pltplt.title('渠道销售占比')
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 如果有中文设置字体格式为微软雅黑
plt.pie(x=[10,20,30],labels=['渠道一','渠道二','渠道三'],colors=['green','red','yellow'],autopct='%.1f%%')
绘制图如下:
2. pandas绘制
pandas模块可以绘制常见图形,诸如:折线图、条形图、直方图、箱线图、核密度图等;
可以通过kind
参数设置图形类型,比如饼图(pie):kind='pie'
Series.plot(kind='line', ax=None, figsize=None, use_index=True, title=None,grid=None, legend=False, style=None, logx=False, logy=False,loglog=False, xticks=None, yticks=None, xlim=None, ylim=None,rot=None, fontsize=None, colormap=None, table=False, yerr=None,xerr=None, label=None, secondary_y=False, **kwds)
参数说明:
-
kind:指定一个字符串值,用于绘制图形的类型,默认为折线图line。还可以绘制垂直条形图bar、水平条形图hbar、直方图hist、箱线图box、核密度图kde、面积图area和饼图pie
-
ax:控制当前子图在组图中的位置例如,在一个2×2的图形矩阵中,通过该参数控制当前图形在矩阵中的位置
-
figsize:控制图形的宽度和高度,以元组形式传递,即(width,hright)
-
use_index:bool类型的参数,是否将序列的行索引用作x轴的刻度,默认为True
-
title:用以添加图形的标题
-
grid:bool类型的参数,是否给图形添加网格线,默认为False
-
legend:bool类型的参数,是否添加子图的图例,默认为False
-
style:如果kind为line,该参数可以控制折线图的线条类型
-
logx:bool类型的参数,是否对x轴做对数变换,默认为False
-
logy:bool类型的参数,是否对y轴做对数变换,默认为False
-
loglog:bool类型的参数,是否同时对x轴和y轴做对数变换,默认为False
-
xticks:用于设置x轴的刻度值
-
yticks:用于设置y轴的刻度值
-
xlim:以元组或列表的形式,设置x轴的取值范围,如(0,3)表示x轴落在0~3的范围之内
-
ylim:以元组或列表的形式,设置y轴的取值范围
-
rot:接受一个整数值,用于旋转刻度值的角度
-
fontsize:接受一个整数,用于控制x轴与y轴刻度值的字体大小
-
colormap:接受一个表示颜色含义的字符串,或者Python的色彩映射对象,该参数用于设置图形的区域颜色
-
table:该参数如果为True,表示在绘制图形的基础上再添加数据表;如果传递的是序列或数据框,则根据数据添加数据表
-
yerr:如果kind为bar或hbar,该参数表示在条形图的基础上添加误差棒
-
xerr:含义同yerr参数
-
label:用于添加图形的标签
-
secondary_y:bool类型的参数,是否添加第二个y轴,默认为False
-
**kwds:关键字参数,该参数可以根据不同的kind值,为图形添加更多的修饰性参数(依赖于pyplot中的绘图函数)
样例:
df = pd.DataFrame([['渠道一',10],['渠道二',20],['渠道三',30]],columns=['渠道','销售额'])
df['销售额'].plot(kind='pie',labels=df['渠道'],title='各渠道销售占比',autopct='%.1f%%')
二、条形图
同饼图一样,适用于分类型数据
1. matplotlib绘制
1.1 竖向条形图
bar(left, height, width=0.8, bottom=None, color=None, edgecolor=None,linewidth=None, tick_label=None, xerr=None, yerr=None,label = None, ecolor=None, align, log=False, **kwargs)
其中barh
表示横向条形图
参数说明:
- x:传递数值序列,指定条形图中x轴上的刻度值
- height:传递数值序列,指定条形图y轴上的高度
- width:指定条形图的宽度,默认为0.8
- bottom:用于绘制堆叠条形图
- color:指定条形图的填充色
- edgecolor:指定条形图的边框色
- linewidth:指定条形图边框的宽度,如果指定为0,表示不绘制边框
- tick_label:指定条形图的刻度标签
- xerr:如果参数不为None,表示在条形图的基础上添加误差棒
- yerr:参数含义同xerr
- label:指定条形图的标签,一般用以添加图例
- ecolor:指定条形图误差棒的颜色
- align:指定x轴刻度标签的对齐方式,默认为center,表示刻度标签居中对齐,如果设置为edge,则表示在每个条形的左下角呈现刻度标签
- log:bool类型参数,是否对坐标轴进行log变换,默认为False
- **kwargs:关键字参数,用于对条形图进行其他设置,如透明度等
样例:
df = pd.DataFrame([['渠道一',10],['渠道二',20],['渠道三',30]],columns=['渠道','销售额'])
plt.ylabel('销售额')
plt.style.use('seaborn-paper') # 绘图风格,具体style值,可通过plt.style.available属性查看,有的值可能用不了
plt.title('各渠道销售情况')
plt.bar(x=range(df.shape[0]),height=df['销售额'],tick_label=df['渠道'])
for x,y in enumerate(df['销售额']): plt.text(x,y+0.2,str(y),ha='center') # 添加y轴标签
1.2 横向条形图:
df = pd.DataFrame([['渠道一',10],['渠道二',20],['渠道三',30]],columns=['渠道','销售额'])
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.ylabel('销售额')
plt.style.use('seaborn-paper') # 绘图风格,具体style值,可通过plt.style.available属性查看
plt.title('各渠道销售情况')
plt.barh(y=range(df.shape[0]),width=df['销售额'],tick_label=df['渠道'])
for x,y in enumerate(df['销售额']): plt.text(y+1,x,str(y),ha='center') # 添加y轴标签
plt.show()
1.3 堆积条形图
相较以上单维度条形图,还可以在同一条形里绘制不同维度对比,同一柱子不同类别设置不同bottom参数即可
df = pd.DataFrame([['深圳',10,20],['北京',35,30],['广州',30,40]],columns=['地区','A部门销售额','B部门销售额'])
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 绘制A部门销售
plt.bar(x=range(df.shape[0]),tick_label=df['地区'],height=df['A部门销售额'],color='green')
# 绘制B部门销售
plt.bar(x=range(df.shape[0]),tick_label=df['地区'],height=df['B部门销售额'],color='red',bottom=df['A部门销售额'])# 如果有第三个部门,bottom=df['A部门销售额'] + df['C部门销售额']
# 显示y轴标签
plt.ylabel('销售额')
# 添加图图形标题
plt.title('各地区销售情况')
# 显示图例
plt.legend(['A部门销售额','B部门销售额'])
plt.show()
1.4 水平交错条形图
这块在绘制其他图形时,只需要将x轴的位置往右平移width宽度就好
样例:
df = pd.DataFrame([['深圳',10,20],['北京',35,30],['广州',30,40]],columns=['地区','A部门销售额','B部门销售额'])
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 绘制A部门销售
plt.bar(x=range(df.shape[0]),tick_label=df['地区'],height=df['A部门销售额'],color='green',width=0.2)
# 绘制B部门销售
plt.bar(x=[x+0.2 for x in range(df.shape[0])],tick_label=df['地区'],height=df['B部门销售额'],color='red',width=0.2)
plt.ylabel('销售额')
# 添加图图形标题
plt.title('各地区销售情况')
# 显示图例
plt.legend(['A部门销售额','B部门销售额'])
# 添加x轴标签,width=0.2,这里设置+0.1两根柱子居中
plt.xticks([x+0.1 for x in range(df.shape[0])],df['地区'])
plt.show()
效果如下:
如果添加刻度标签,通过plt.text
参数设置即可,同上;
2. pandas绘制
2.1 竖形条形图
样例:
df = pd.DataFrame([['渠道一',10],['渠道二',20],['渠道三',30]],columns=['渠道','销售额'])
df['销售额'].plot(kind='bar',width=0.2,title='销售额',color='green')
plt.ylabel('销售额')
plt.title('各渠道销售情况')
plt.xticks(range(df.shape[0]),df['渠道'])
for x,y in enumerate(df['销售额']): plt.text(x,y+0.4,str(y),ha='center') # 添加y轴标签
2.2 水平交叉条形图
df = pd.DataFrame([['深圳',10,20],['北京',35,30],['广州',30,40]],columns=['地区','A部门销售额','B部门销售额'])
df.plot(x='地区',y=['A部门销售额','B部门销售额'],kind='bar',color=['green','red'],width=0.4,title='各地区销售额')
plt.ylabel('销售额')
plt.xlabel('')
plt.show()
3. seaborn绘制
import seaborn as sns
sns.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,ci=95, n_boot=1000, orient=None, color=None, palette=None,saturation=0.75, errcolor='.26', errwidth=None, dodge=True, ax=None, **kwargs)
参数说明
- x:指定条形图的x轴数据
- y:指定条形图的y轴数据
- hue:指定用于分组的另一个离散变量
- data:指定用于绘图的数据集
- order:传递一个字符串列表,用于分类变量的排序
- hur_order:传递一个字符串列表,用于分类变量hue值的排序
- ci:用于绘制条形图的误差棒(置信区间)
- n_boot:当指定ci参数时,可以通过n_boot参数控制自助抽样的迭代次数
- orient:指定水平或垂直条形图
- color:指定所有条形图所属的一种填充色
- palette:指定hue变量中各水平的颜色
- saturation:指定颜色的透明度
- errcolor:指定误差棒的颜色
- errwidth:指定误差棒的线宽
- capsize:指定误差棒两端线条的长度
- dodge:bool类型参数,当使用hue参数时,是否绘制水平交错条形图,默认为True
- ax:用于控制子图的位置
- **kwagrs:关键字参数,可以调用plt.bar函数中的其他参数
样例:
df = pd.DataFrame([['渠道一',10],['渠道二',20],['渠道三',30]],columns=['渠道','销售额'])
sns.barplot(y='渠道',x='销售额',data=df,color='steelblue',orient='horizontal')
plt.xlabel('销售额')
plt.ylabel('')
plt.title('各渠道销售')
for y,x in enumerate(df['销售额']):plt.text(x,y,str(x),va='center')
plt.show()
三、直方图
主要应用于连续型变量,查看变量分布情况
1. matplotlib绘制
plt.hist(x, bins=10, range=None, normed=False,weights=None, cumulative=False, bottom=None,histtype='bar', align='mid', orientation='vertical',rwidth=None, log=False, color=None,label=None, stacked=False)
参数说明:
- x:指定条形图的x轴数据
- y:指定条形图的y轴数据
- hue:指定用于分组的另一个离散变量
- data:指定用于绘图的数据集
- order:传递一个字符串列表,用于分类变量的排序
- hur_order:传递一个字符串列表,用于分类变量hue值的排序
- ci:用于绘制条形图的误差棒(置信区间)
- n_boot:当指定ci参数时,可以通过n_boot参数控制自助抽样的迭代次数
- orient:指定水平或垂直条形图
- color:指定所有条形图所属的一种填充色
- palette:指定hue变量中各水平的颜色
- saturation:指定颜色的透明度
- errcolor:指定误差棒的颜色
- errwidth:指定误差棒的线宽
- capsize:指定误差棒两端线条的长度
- dodge:bool类型参数,当使用hue参数时,是否绘制水平交错条形图,默认为True
- ax:用于控制子图的位置
- **kwagrs:关键字参数,可以调用plt.bar函数中的其他参数
2. seaborn绘制
sns.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None,hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None,color=None, vertical=False, norm_hist=False, axlabel=None,label=None, ax=None)
参数说明:
- a:指定绘图数据,可以是序列、一维数组或列表
- bins:指定直方图条形的个数
- hist:bool类型的参数,是否绘制直方图,默认为True
- kde:bool类型的参数,是否绘制核密度图,默认为True
- rug:bool类型的参数,是否绘制须图(如果数据比较密集,该参数比较有用),默认为False
- fit:指定一个随机分布对象(需调用scipy模块中的随机分布函数),用于绘制随机分布的概率密度曲线
- hist_kws:以字典形式传递直方图的其他修饰属性,如填充色、边框色、宽度等
- kde_kws:以字典形式传递核密度图的其他修饰属性,如线的颜色、线的类型等
- rug_kws:以字典形式传递须图的其他修饰属性,如线的颜色、线的宽度等
- fit_kws:以字典形式传递概率密度曲线的其他修饰属性,如线条颜色、形状、宽度等
- color:指定图形的颜色,除了随机分布曲线的颜色
- vertical:bool类型的参数,是否将图形垂直显示,默认为True
- norm_hist:bool类型的参数,是否将频数更改为频率,默认为False
- axlabel:用于显示轴标签
- a:指定绘图数据,可以是序列、一维数组或列表
- bins:指定直方图条形的个数
- hist:bool类型的参数,是否绘制直方图,默认为True
- kde:bool类型的参数,是否绘制核密度图,默认为True
- rug:bool类型的参数,是否绘制须图(如果数据比较密集,该参数比较有用),默认为False
- fit:指定一个随机分布对象(需调用scipy模块中的随机分布函数),用于绘制随机分布的概率密度曲线
- hist_kws:以字典形式传递直方图的其他修饰属性,如填充色、边框色、宽度等
- kde_kws:以字典形式传递核密度图的其他修饰属性,如线的颜色、线的类型等
- rug_kws:以字典形式传递须图的其他修饰属性,如线的颜色、线的宽度等
- fit_kws:以字典形式传递概率密度曲线的其他修饰属性,如线条颜色、形状、宽度等
- color:指定图形的颜色,除了随机分布曲线的颜色
- vertical:bool类型的参数,是否将图形垂直显示,默认为True
- norm_hist:bool类型的参数,是否将频数更改为频率,默认为False
- axlabel:用于显示轴标签
- label:指定图形的图例,需结合plt.legend()一起使用。
- ax:指定子图的位置。
三、箱线图
主要用于查看连续型变量离散情况,比如找出离异值
1. matplotlib绘制
plt.boxplot(x, notch=None, sym=None, vert=None,whis=None, positions=None, widths=None,patch_artist=None, meanline=None, showmeans=None,showcaps=None, showbox=None, showfliers=None,boxprops=None, labels=None, flierprops=None,medianprops=None, meanprops=None,capprops=None, whiskerprops=None)
参数说明:
- x:指定要绘制箱线图的数据
- notch:是否以凹口的形式展现箱线图,默认非凹口
- sym:指定异常点的形状,默认为+号显示
- vert:是否需要将箱线图垂直摆放,默认垂直摆放
- whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差
- positions:指定箱线图的位置,默认为[0,1,2…]
- widths:指定箱线图的宽度,默认为0.5
- patch_artist:bool类型参数,是否填充箱体的颜色;默认为False
- meanline:bool类型参数,是否用线的形式表示均值,默认为False
- showmeans:bool类型参数,是否显示均值,默认为False
- showcaps:bool类型参数,是否显示箱线图顶端和末端的两条线(即上下须),默认为True
- showbox:bool类型参数,是否显示箱线图的箱体,默认为True
- showfliers:是否显示异常值,默认为True
- boxprops:设置箱体的属性,如边框色,填充色等
- labels:为箱线图添加标签,类似于图例的作用
- filerprops:设置异常值的属性,如异常点的形状、大小、填充色等
- medianprops:设置中位数的属性,如线的类型、粗细等。
- meanprops:设置均值的属性,如点的大小、颜色等。
- capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等。
- whiskerprops:设置须的属性,如颜色、粗细、线的类型等。
2. seaborn绘制
sns.boxplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,orient=None, color=None, palette=None, saturation=0.75, width=0.8,dodge=True, fliersize=5, linewidth=None, whis=1.5, notch=False, ax=None, **kwargs)
参数说明:
- x:指定箱线图的x轴数据
- y:指定箱线图的y轴数据
- hue:指定分组变量
- data:指定用于绘图的数据集
- order:传递一个字符串列表,用于分类变量的排序
- hue_order:传递一个字符串列表,用于分类变量hue值的排序
- orient:指定箱线图的呈现方向,默认为垂直方向
- color:指定所有箱线图的填充色
- palette:指定hue变量的区分色
- saturation:指定颜色的透明度
- width:指定箱线图的宽度
- dodge:bool类型的参数,当使用hue参数时,是否绘制水平交错的箱线图,默认为True
- fliersize:指定异常值点的大小
- linewidth:指定箱体边框的宽度
- whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差
- notch:bool类型的参数,是否绘制凹口箱线图,默认为False
- ax:指定子图的位置
- **kwargs:关键字参数,可以调用plt.boxplot函数中的其他参数
四、小提琴图
1. seaborn绘制
sns.violinplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,bw='scott', cut=2, scale='area', scale_hue=True, gridsize=100,width=0.8, inner='box', split=False, dodge=True, orient=None,linewidth=None, color=None, palette=None, saturation=0.75, ax=None)
相关参数:
- x:指定小提琴图的x轴数据
- y:指定小提琴图的y轴数据
- hue:指定一个分组变量
- data:指定绘制小提琴图的数据集
- order:传递一个字符串列表,用于分类变量的排序
- hue_order:传递一个字符串列表,用于分类变量hue值的排序
- bw:指定核密度估计的带宽,带宽越大,密度曲线越光滑
- scale:用于调整小提琴图左右的宽度,如果为area,则表示每个小提琴图左右部分拥有相同的面积;如果为count,则表示根据样本数量来调节宽度;如果为width,则表示每个小提琴图左右两部分拥有相同的宽度
- scale_hue:bool类型参数,当使用hue参数时,是否对hue变量的每个水平做标准化处理,默认为True
- width:使用hue参数时,用于控制小提琴图的宽度
- inner:指定小提琴图内部数据点的形态,如果为box,则表示绘制微型的箱线图;如果为quartiles,则表示绘制四分位的分布图;如果为point或stick,则表示绘制点或小竖条
- split:bool类型参数,使用hue参数时,将小提琴图从中间分为两个不同的部分,默认为False
- x:指定小提琴图的x轴数据
- y:指定小提琴图的y轴数据
- hue:指定一个分组变量
- data:指定绘制小提琴图的数据集
- order:传递一个字符串列表,用于分类变量的排序
- hue_order:传递一个字符串列表,用于分类变量hue值的排序
- bw:指定核密度估计的带宽,带宽越大,密度曲线越光滑
- scale:用于调整小提琴图左右的宽度,如果为area,则表示每个小提琴图左右部分拥有相同的面积;如果为count,则表示根据样本数量来调节宽度;如果为width,则表示每个小提琴图左右两部分拥有相同的宽度
- scale_hue:bool类型参数,当使用hue参数时,是否对hue变量的每个水平做标准化处理,默认为True
- width:使用hue参数时,用于控制小提琴图的宽度
- inner:指定小提琴图内部数据点的形态,如果为box,则表示绘制微型的箱线图;如果为quartiles,则表示绘制四分位的分布图;如果为point或stick,则表示绘制点或小竖条
- split:bool类型参数,使用hue参数时,将小提琴图从中间分为两个不同的部分,默认为False
五、折线图
一般用于反应连续型变量趋势
1. matplotlib绘制
plt.plot(x, y, linestyle, linewidth, color, marker,markersize, markeredgecolor, markerfactcolor,markeredgewidth, label, alpha)
参数说明:
- x:指定折线图的x轴数据
- y:指定折线图的y轴数据
- linestyle:指定折线的类型,可以是实线、虚线、点虚线、点点线等,默认为实线
- linewidth:指定折线的宽度
- marker:可以为折线图添加点,该参数是设置点的形状
- markersize:设置点的大小
- markeredgecolor:设置点的边框色
- markerfactcolor:设置点的填充色
- markeredgewidth:设置点的边框宽度
- label:为折线图添加标签,类似于图例的作用
线的类型(参数:linestyle):
点的类型(参数:marker):
六、散点图
主要用于研究两个变量的相关关系,比如线性回归,可以先通过绘制散点图看两个变量相关情况
1. matplotlib绘制
scatter(x, y, s=20, c=None, marker='o', cmap=None, norm=None, vmin=None,vmax=None, alpha=None, linewidths=None, edgecolors=None)
参数说明:
- x:指定散点图的x轴数据
- y:指定散点图的y轴数据
- s:指定散点图点的大小,默认为20,通过传入其他数值型变量,可以实现气泡图的绘制
- c:指定散点图点的颜色,默认为蓝色,也可以传递其他数值型变量,通过cmap参数的色阶表示数值大小
- marker:指定散点图点的形状,默认为空心圆
- cmap:指定某个Colormap值,只有当c参数是一个浮点型数组时才有效
- norm:设置数据亮度,标准化到0~1,使用该参数仍需要参数c为浮点型的数组
- vmin、vmax:亮度设置,与norm类似,如果使用norm参数,则该参数无效
- alpha:设置散点的透明度
- linewidths:设置散点边界线的宽度
- edgecolors:设置散点边界线的颜色
2. pandas绘制
df.plot(kind='scatter',x='x变量的column名称',y='y的column名称',title='标题')
plt.xlabel('x轴标签')
plt.ylabel('y轴标签')
plt.show() # 图展示
3. seaborn绘制
lmplot(x, y, data, hue=None, col=None, row=None, palette=None, col_wrap=None,size=5, aspect=1, markers='o', sharex=True, sharey=True, hue_order=None,col_order=None, row_order=None, legend=True, legend_out=True, scatter=True,fit_reg=True, ci=95, n_boot=1000, order=1, logistic=False, lowess=False,robust=False, logx=False, x_partial=None, y_partial=None, truncate=False,x_jitter=None, y_jitter=None, scatter_kws=None, line_kws=None)
参数说明:
- x,y:指定x轴和y轴的数据
- data:指定绘图的数据集
- hue:指定分组变量
- col,row:用于绘制分面图形,指定分面图形的列向与行向变量
- palette:为hue参数指定的分组变量设置颜色
- col_wrap:设置分面图形中每行子图的数量
- size:用于设置每个分面图形的高度
- aspect:用于设置每个分面图形的宽度,宽度等于size*aspect
- markers:设置点的形状,用于区分hue参数指定的变量水平值
- sharex,sharey:bool类型参数,设置绘制分面图形时是否共享x轴和y轴,默认为True
- hue_order,col_order,row_order:为hue参数、col参数和row参数指定的分组变量设值水平值顺序
- legend:bool类型参数,是否显示图例,默认为True
- legend_out:bool类型参数,是否将图例放置在图框外,默认为True
- scatter:bool类型参数,是否绘制散点图,默认为True
- fit_reg:bool类型参数,是否拟合线性回归,默认为True
- ci:绘制拟合线的置信区间,默认为95%的置信区间
- n_boot:为了估计置信区间,指定自助重抽样的次数,默认为1000次
- order:指定多项式回归,默认指数为1
- logistic:bool类型参数,是否拟合逻辑回归,默认为False
- lowess:bool类型参数,是否拟合局部多项式回归,默认为False
- robust:bool类型参数,是否拟合鲁棒回归,默认为False
- logx:bool类型参数,是否对x轴做对数变换,默认为False
- x_partial,y_partial:为x轴数据和y轴数据指定控制变量,即排除x_partial和y_partial变量的影响下绘制散点图
- truncate:bool类型参数,是否根据实际数据的范围对拟合线做截断操作,默认为False
- x_jitter,y_jitter:为x轴变量或y轴变量添加随机噪声,当x轴数据与y轴数据比较密集时,可以使用这两个参数
- scatter_kws:设置点的其他属性,如点的填充色、边框色、大小等
- line_kws:设置拟合线的其他属性,如线的形状、颜色、粗细等
核心参数:x,y,hue,data
七、气泡图
相比散点图展示二维数据关系,气泡图能展示更多的信息,比如可以通过气泡大小、颜色表示某个变量亦或维度
1. matplotlib绘制
八、热力图
比如查看各个城市拥挤情况,可以实现类似excel中颜色条件格式的效果,比如展示各个分组数据,值比较大的用深度颜色标记
1. seaborn绘制
heatmap(data, vmin=None, vmax=None, cmap=None, center=None, annot=None, fmt='.2g',annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws = None,square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None)
参数说明:
- data:指定绘制热力图的数据集
- vmin,vmax:用于指定图例中最小值与最大值的显示值
- cmap:指定一个colormap对象,用于热力图的填充色
- center:指定颜色中心值,通过该参数可以调整热力图的颜色深浅
- annot:指定一个bool类型的值或与data参数形状一样的数组,如果为True,就在热力图的每个单元上显示数值
- fmt:指定单元格中数据的显示格式
- annot_kws:有关单元格中数值标签的其他属性描述,如颜色、大小等
- linewidths:指定每个单元格的边框宽度
- linecolor:指定每个单元格的边框颜色
- cbar:bool类型参数,是否用颜色条作为图例,默认为True
- square:bool类型参数,是否使热力图的每个单元格为正方形,默认为False
- cbar_kws:有关颜色条的其他属性描述
- xticklabels,yticklabels:指定热力图x轴和y轴的刻度标签,如果为True,则分别以数据框的变量名和行名称作为刻度标签
- mask:用于突出显示某些数据
- ax:用于指定子图的位置
九、 多个图形合并
类似于tkinter,python图形展示可以通过grid布局,函数级参数如下:
subplot2grid(shape, loc, rowspan=1, colspan=1, **kwargs)
参数说明:
- shape:指定组合图的框架形状,以元组形式传递,如2×3的矩阵可以表示成(2,3)。
- loc:指定子图所在的位置,如shape中第一行第一列可以表示成(0,0)。
- rowspan:指定某个子图需要跨几行。
- colspan:指定某个子图需要跨几列。
其中跨行和跨列参数,表示该子图横向亦或纵向跨几个格子
上图,一个2x3=6个格子,左侧6个子图,右侧4个子图,有一个跨了两列,有一个跨了两行
十、绘图函数汇总
import matplotlib.pyplot as plt
import seaborn as sns
pandas则使用使用Series
或DataFrame
调用plot
函数即可
声明:函数参数说明主要整理自《从零开始学python数据分析与挖掘》
该书偏向技术应用,详解了python数据处理,可视化以及机器学习,如果纯粹学习技术应用,该书值得推荐。
其他相关书籍:张杰-《Python数据可视化之美》