Python 数据科学 Seaborn

用 Seaborn 绘制统计型数据可视图

Seaborn 是基于 matplotlib 开发的高阶Python 数据可视图库,用于绘制优雅、美观的统计图形。

使用下列别名导入该库(一般取别名为sns):

import matplotlib.pyplot as plt
import seaborn as sns

使用 Seaborn 创建图形的基本步骤:
1.准备数据
2.设定画布外观
3.使用 Seaborn 绘图
4.自定义图形

import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset("tips") # 第一步
sns.set_style("whitegrid") # 第二步
g = sns.lmplot(x="tip",  # 第三步
                y="total_bill", 
                data=tips, 
                aspect=2)
g = (g.set_axis_labels("Tip","Total bill(USD)").set(xlim=(0,10),ylim=(0,100))) # 第4步
plt.title("title")
plt.show(g) 

报错:urllib.error.URLError: <urlopen error [Errno 11004] getaddrinfo failed>
原因:seaborn-data文件里面是空的

上方代码报错解决办法:
1.去https://github.com/mwaskom/seaborn-data下载seaborn-data文件
2.解压后打开文件并复制
3.在电脑中搜索seaborn-data原文件(发现文件夹是空的)
4.将第二步复制的文件粘贴到步骤3的原文件中

1 数据

import pandas as pd
import numpy as np

uniform_data = np.random.rand(10, 12)
data = pd.DataFrame({'x':np.arange(1,101),
                    'y':np.random.normal(0,4,100)})


# Seaborn 提供了内置数据集
titanic = sns.load_dataset("titanic")
iris = sns.load_dataset("iris")

2 画布外观

f, ax = plt.subplots(figsize=(5,6)) # 创建画布与子图

Seaborn 样式

sns.set() # 设置或重置 Seaborn 默认值
sns.set_style("whitegrid") # 设置 matplotlib 参数
sns.set_style("ticks",            
                {"xtick.major.size":8,
                 "ytick.major.size":8})
sns.axes_style("whitegrid") # 返回参数字典或用with设置临时样式

上下文函数

sns.set_context("talk") # 将上下文设置为 "talk"
sns.set_context("notebook", # 将上下文设置为 "notebook", 缩放字体,覆盖参数映射
                font_scale=1.5,
                rc={"lines.linewidth":2.5})

调色板

sns.set_palette("husl",3) # 定义调色板
sns.color_palette("husl") # 使用 with 临时设置调色板
flatui = ["#9b59b6","#3498db","#95a5a6","#e74c3c","#34495e","#2ecc71"]
sns.set_palette(flatui) # 设置调色板

3 使用 Seaborn 绘图

坐标轴栅格

g = sns.FacetGrid(titanic,
                col="survived",  
                row="sex") # 绘制条件关系的子图栅格
g = g.map(plt.hist,"age")
sns.factorplot(x="pclass",
                y="survived",       
                hue="sex",
                data=titanic) # 在分面栅格上绘制分类图
sns.lmplot(x="sepal_width",
            y="sepal_length",       
            hue="species", 
            data=iris) # 绘制适配分面栅格的数据与回归模型

h = sns.PairGrid(iris) # 绘制配对关系的子图栅格
h = h.map(plt.scatter) # 绘制配对的双变量分布
sns.pairplot(iris) # 绘制双变量图的边际单变量图栅格
# i = sns.JointGrid(x="x",
#                 y="y",
#                 data=data)
# i = i.plot(sns.regplot,
#             sns.distplot)
sns.jointplot("sepal_length",  
                "sepal_width", # #输入两个绘图变量
                data=iris,
                color='#098154',#修改颜色
                height=5, #中部图高度(中部图为正方形)
                ratio=2,#中部图与边际图尺寸比
                marker='^',#修改散点marker
#                 marginal_kws=dict(bins=15, #hist箱子个数
#                                     kde=True,#开启核密度图
#                                     color='#c72e29',#直方图hist填充色                                    
#                                    ), # 修改边际图
                kind='kde', # scatter(默认),可选reg,resid,kde,hex
             ) # 绘制双变量分布

各类图形

1 散点图

sns.stripplot(x="species",
                y="petal_length",
                data=iris) # 含分类变量的散点图

sns.swarmplot(x="species",
                y="petal_length",
                data=iris) # 不重叠分类散点图

2 条形图

sns.barplot(x="sex",
            y="survived",
            hue="class",
            data=titanic)

3 计数图

sns.countplot(x="deck",
            data=titanic,
            palette="Greens_d")

4 点图

sns.pointplot(x="class",
                y="survived",
                hue="sex",                 
                data=titanic, 
                palette={"male":"g",
                "female":"m"},
                markers=["^","o"],
                linestyles=["-","--"])

5  箱型图

sns.boxplot(x="alive",
            y="age",
            hue="adult_male",
            data=titanic) # 箱形图

sns.boxplot(data=iris,orient="h") # 使用宽表数据的箱型图

6 小提琴图

sns.violinplot(x="age",
                y="sex",
                hue="survived",
                data=titanic)

7 回归图

sns.regplot(x="sepal_width",    
            y="sepal_length",   
            data=iris,
            ax=ax) # 绘制与线性回归模型拟合的数据
f

8 分布图

plot = sns.distplot(data.y,
                kde=False,
                color="b") # 绘制单变量分布

9 矩阵图

sns.heatmap(uniform_data,vmin=0,vmax=1) # 热力图

深度自定义

Axisgrid 对象

g.despine(left=True) # 移除左框
g.set_ylabels("Survived") # 设置Y轴的标签
g.set_xticklabels(rotation=45) # 设置X轴刻度标签
g.set_axis_labels("Survived",  
                    "Sex") # 设置坐标轴标签
h.set(xlim=(0,5),
      ylim=(0,5),
        xticks=[0,2.5,5], 
        yticks=[0,2.5,5]) # 设置X与Y轴的限制和刻度

图形

plt.title("A Title") # 添加图形标题
plt.ylabel("Survived") # 调整y轴标签
plt.xlabel("Sex") # 调整x轴标签
plt.ylim(0,100) # 调整y轴限制
plt.xlim(0,10) # 调整x轴限制
plt.setp(ax,yticks=[0,5]) # 调整图形属性
plt.tight_layout() # 调整子图参数

显示或保存图形

plt.show() # 显示图形
plt.savefig("foo.png") # 将画布保存为图形
plt.savefig("foo.png",
                transparent=True) # 保存透明画布

关闭与清除

plt.cla() # 清除坐标轴
>>> plt.clf() # 清除画布
>>> plt.close() # 关闭窗口

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值