用seaborn画图

# seaborn
- seaborn是基于matplotlib的一个可视化的库 是在matplotlib的基础上进行的更加高级的封装 是作图变得更加容易
- 不需要了解大量底层参数就能使得图形变得更加精致 兼容numpy和pandas的数据结构
进而在很大程度上完成数据可视化

- 使用seaborn的三种方式
    - plt.style('seaborn')
    - sns.set
    - 调用seaborn的函数
- 但对于简单的制图,使用前两种都可以,但对于复杂图形,可能会使用第三种方式(用pandas调用数据)

seaborn的基本语法

首先简单画个图

x = np.linspace(0,100,1000)#创建等差数列 初始为0 终止为100 共有1000个元素
y = np.sin(x)
plt.plot(x,y,c='red',lw=2,ls='-')
plt.show()

用seaborn画图_第1张图片

 plt.style.use('seaborn')#第一种调用方式
x = np.linspace(0,100,1000)#创建等差数列 初始为0 终止为100 共有1000个元素
y = np.sin(x)
plt.plot(x,y,c='red',lw=2,ls='-')
plt.show()

用seaborn画图_第2张图片

sns.set(style='darkgrid',context='notebook',font_scale=1.2)#;style是主题样式,总共有五种选项 darkgrid whitegrid 等
#context指元素缩放尺寸 一般用默认notebook font_scale是控制坐标轴刻度大小
x = np.linspace(0,100,1000)#创建等差数列 初始为0 终止为100 共有1000个元素
y = np.sin(x)
plt.plot(x,y,c='red',lw=2,ls='-')
plt.show()

用seaborn画图_第3张图片 

 - 第三种
    sns.barplot(x=’横坐标名称‘,y=‘纵坐标名称’,data=要调用的数据,color=‘’,orient=‘vertical’‘h’#柱状图朝向)
- 垂直图和水平图的横纵坐标参数要调换

# 绘制常用图形如下
    sns.barplot(x,y)柱状图
    sns.scatter(x,y)散点图
    sns.boxplot:箱线图
    sns.distplot:直方图

- 柱状图
    语法如下:
    sns.barplot(x=横坐标对应的数据名,y=纵坐标对应的数据名,hue=‘’,data=,color=‘’,palette=‘’,orient=)-
- hue:分类变量
- palette:调色板
- 调色板参数:muted,RdBu,Set1,Blues.d,husl等

- 散点图
    语法如下:
    sns.scatterplot(x,y,hue,data,palette,style,s,markers)
- style:以分类变量作图,产生不同的形状
- s:形状大小
- markers:形状

iris = pd.read_csv('iris.csv')
sns.scatterplot(x = 'Petal_Width',y = 'Petal_Length',data = iris,color = 'red',marker = '+', s = 20)
plt.xlabel('花瓣宽度')
plt.ylabel('花瓣长度')
plt.show()

用seaborn画图_第4张图片

 #基于分类变量的散点图

iris = pd.read_csv('iris.csv')
sns.scatterplot(x = 'Petal_Width',y = 'Petal_Length',data = iris,color = 'red',s = 20,hue = 'Species',
                style = 'Species')
plt.xlabel('花瓣宽度')
plt.ylabel('花瓣长度')
plt.show()

用seaborn画图_第5张图片

 

 - 箱线图
    sns.boxplot(x,y,hue,data,color,width,order,fliesize,linewidth,color)
    - flierprops:异常值情况
    - meanprops:均值情况
    - medianprops:中值情况
    - fliersize:异常值点的大小
    - linewidth:指定箱体边框的宽度
    - meanprops:均值属性

Titanic = pd.read_csv('titanic_train.csv')
Titanic.dropna(subset=['Age'].inplace = True)#导入数据

sns.boxplot(y = 'Age', data = Titanic,
           showmeans = True,color = 'steelblue',width = 0.3,
           flierprops={'marker':'o','markerfacecolor':'indianred','markersize':3},
           meanprops = {'marker':'D','markersize':4},
           medianprops = {'linestyle':'--','color':'orange'})
           用seaborn画图_第6张图片

#基于分租变量的箱线图情况

sec_building = pd.read_excel('sec_buildings.xlsx')#导入数据

group_region = sec_building.groupby('redion')#创建一个分组对象

avg_price = group_region.agg({'price_unit':np.mean}).source_values('price_unit',ascending = False #计算均值 绘制不同地区二手房情况并按照降序排序

avg_price

用seaborn画图_第7张图片

plt.figure(figuresize=(12,8))#改变画布大小
sns.boxplot(x ='region',y = 'price_unit', data = sec_building,order = avg_price.index,
           showmeans = True,color = 'steelblue',width = 0.3,
           flierprops={'marker':'o','markerfacecolor':'indianred','markersize':3},
           meanprops = {'marker':'D','markersize':4},
           medianprops = {'linestyle':'--','color':'orange'})#order是顺序,按照分类变量绘制箱线图时必须要有一个顺序
plt.ylabel('单价(元)')
plt.title('不同地区二手房价对比')
plt.xticks(rotation = 45,frontsize = 16)#横坐标旋转45度,变成16号字体
plt.show() 

用seaborn画图_第8张图片

- 直方图
    sns.distplot(a,bins,hist,kde,color,rug,ax,fit,kws,kde_kws,fit_kws,vertical, norm_hist)
    - a:数据
    - kde:是否绘制核密度图
    - hist:是否显示柱子
    - hist_kws:传递直方图相关参数
    - kde_kws:传递核密度图相关参数
    - fit_kws:传递概率密度曲线相关参数
    - bins:柱子的数目
    - rug:x轴是否显示小细条
    - ax:指定子图位置
    - fit:是否绘制概率密度曲线图
    - vertical:是否水平画图
    - norm_hist:频数是否计算成概率
    - color:曲线颜色

Titanic = pd.read_csv('titanic_train.csv')

Titanic.dropna(subset = ['Age'],inplace = True) #除去缺失值

Age_Male = Titanic[Titanic.Sex =='male']['Age']
Age_Female = Titanic[Titanic.Sex =='female']['Age']

#绘制男女乘客年龄直方图及相关正太分布图 

from scipy.stats import norm

sns.distplot(Age_Male,bins = 30,kde = False,hist_kws{'color':'steelblue'}
            norm_hist = True,lael = '男性')
sns.distplot(Age_Male,hist = False,kde = False,fit = norm,hist_kws{'color':'yellow'}
            norm_hist = True,lael = '男性正太分布图')

用seaborn画图_第9张图片

sns.distplot(Age_Male,bins = 30,kde = False,hist_kws{'color':'steelblue'}
            norm_hist = True,lael = '男性')
sns.distplot(Age_Male,hist = False,kde = False,fit = norm,fit_kws{'color':'yellow'}
            norm_hist = True,lael = '男性正太分布图')
sns.distplot(Age_Feale,bins = 30,kde = False,hist_kws{'color':'red'}
            norm_hist = True,lael = '女性')
sns.distplot(Age_Feale,hist = False,kde = False,fit = norm,fit_kws{'color':'o'}
            norm_hist = True,lael = '女性正分布图')
plt.legend(loc = 'best')
plt.show()

用seaborn画图_第10张图片 

 

你可能感兴趣的:(画图,python,可视化,数据可视化)