FacetGrid展示数据集的子集
FacetGrid可以绘制出多达三个维度(row,col,和hue)的图形
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
#facetgrid展示数据集的子集 FacetGrid可以绘制出多达三个维度(row,col,和hue)的图形
t = sns.load_dataset('tips') #sns的一个内置数据
g = sns.FacetGrid(t,col='time') #time是t里的一个列
g.map(plt.hist,'tip') #plt.hist条形图
plt.show()
g1 = sns.FacetGrid(t,col='sex',hue='smoker')
g1.map(plt.scatter,'total_bill','tip',alpha=0.7) #alpha散点图,点的透明层度
g1.add_legend() #在最右边显示第二个列hue='smoker'的颜色区分
plt.show()
g2 = sns.FacetGrid(t,row='smoker',col='time',margin_titles=True)
g2.map(sns.regplot,'size','total_bill',color='.1',fit_reg=False,x_jitter=.1) #fit_reg=False不画回归线,x_jitter点在x上的浮动
plt.show()
#自己指定类别顺序
# d = t.day.value_counts().index
# print(d)
d = pd.Categorical(['Thur', 'Fri', 'Sat', 'Sun'])
g4 = sns.FacetGrid(t,row='day',row_order=d,size=2,aspect=4) #size=2单位长度为2,aspect=4单位宽度为4
g4.map(sns.boxplot,'total_bill')
plt.show()
#例 :绘制多变量
color_2 = dict(Lunch='seagreen',Dinner='gray')
# color_2 ={'Lunch':'seagreen','Dinner':'gary'} #字典里储存两个量的颜色
with sns.axes_style('white'):
g5 = sns.FacetGrid(t,col='time',row='sex',palette=color_2,size=5,hue_kws={'marker':['^','v']}) #hue_kws={'marker':['^','v']}指定散点图点的形状
g5.map(plt.scatter,'total_bill','tip',s=50,alpha=0.7,linewidth=0.5,edgecolor='white') #s=50散点图点的大小为50,
g5.add_legend()
g5.set_axis_labels('X-name','Y-name') #set_axis_labels自己指定xy轴名字
g5.set(xticks=[10,20,50],yticks=[2,6,10]) #指定xy显示的值
g5.fig.subplots_adjust(wspace=0.5,hspace=0.5) #子图和子图之间的宽高间距
plt.show()
当有一份数据集有很多变量,
我们需要考察两两变量的之间关系时,
是不是说我们要写很多重复的代码来实现不同变量之间的关系呢?
比如我们研究抢断与得分、抢断与失误、抢断都犯规之间的关系时,
是不是要不停的传不同的变量进去呢?答案是不需要,
因为PairGrid这个类就可以帮我们实现以上的功能,
它的主要功能就是绘制反映成对变量关系的子图。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
#PairGrid seaborn的散点图矩阵(Pairs Plots)可视化数据
i = sns.load_dataset('iris')
g6 = sns.PairGrid(i)
# g6 = sns.PairGrid(i,hue='species') #hue='species'添加区分类别species
# g6 = sns.PairGrid(i,vars=['sepal_length','sepal_width'] ,hue='species') #vars=['sepal_length','sepal_width'],只取'sepal_length','sepal_width'这两个特征
# g6.map_diag(plt.hist) #指定对角线是直方图
# g6.map_offdiag(plt.scatter) #指定其他图是散点图
g6.map(plt.scatter)
plt.show()
限定最小值最大值,超出最大值就都是最大值的颜色,超出最小同理
center=0,以0为中心改变颜色
annot=True显示每一格的值,mt='d’设置字体(默认的会乱码)
linewidths=0.5每个格之间的间距为0.5
cmap='Y1CnBu’指定颜色板
cbar=False隐藏cbar
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
u = np.random.rand(3,3) #随机生成3x3二维矩阵数据
h = sns.heatmap(u)
# h = sns.heatmap(u,vmin=0.2,vmax=0.5) #限定最小值最大值,超出最大值就都是最大值的颜色,超出最小同理
# h = sns.heatmap(u,center=0) #center=0,以0为中心改变颜色
# h = sns.heatmap(u,annot=True,fmt='d') #annot=True显示每一格的值,mt='d'设置字体(默认的会乱码)
# h = sns.heatmap(u,linewidths=0.5) #linewidths=0.5每个格之间的间距为0.5
# h = sns.heatmap(u,cmap='Y1CnBu') #cmap='Y1CnBu'指定颜色板
# h = sns.heatmap(u,cbar=False) #cbar=False隐藏cbar
plt.show()
u1 = sns.load_dataset('flights') #sns内部储存数据,记录的是一个航班某年某月载客人数
u1 = u1.pivot('month','year','passengers') #数据类型转换成'month','year','passengers'为行名的矩阵
h1 = sns.heatmap(u1)
plt.show()