[Introdução à análise de dados] Seaborn [gráfico de dispersão, gráfico de barras, gráfico de contagem, mapa de calor, gráfico de caixa, gráfico de violino]


  Seaborn éDesenvolvido com base em matplotlibUma biblioteca de visualização de dados Python de alto nível para desenhar gráficos estatísticos elegantes e bonitos.
  Importe a biblioteca usando o seguinte alias:

>>> import matplotlib.pyplot as plt
>>> import seaborn as sns

  Etapas básicas para criar gráficos usando Seaborn:
  1. Prepare os dados : Queremos ter certeza de que o conjunto de dados foi plotado .
  2. Defina a aparência da tela : Antes de criar o gráfico, podemos definir a aparência da tela , como definir a cor de fundo , ajustar o intervalo do eixo , etc. Essas configurações podem ser feitas usando Matplotlib.
  3. Use o desenho Seaborn : Importe a biblioteca Seaborn e use suas funções para desenhar gráficos . Seaborn também oferece muitas funções avançadas de desenho e opções de estilo , tornando o desenho mais simples e bonito.
  4. Gráficos personalizados : se precisar personalizar ainda mais os gráficos , você pode usar as funções e métodos do Matplotlib para configurações personalizadas . A biblioteca Seaborn é baseada em Matplotlib, então podemosUse os recursos do Matplotlib para personalizar gráficos após a plotagem do Seaborn

>>> import matplotlib.pyplot as plt
>>> import seaborn as sns
# 导入必要的库 matplotlib.pyplot 和 seaborn

>>> tips = sns.load_dataset("tips")
# 通过 sns.load_dataset("tips") 加载了一个名为 "tips" 的示例数据集
>>> sns.set_style("whitegrid")
# 使用 sns.set_style("whitegrid") 设置绘图的样式

>>> g = sns.lmplot(x="tip", y="total_bill", data=tips, aspect=2)
# 使用 sns.lmplot() 创建了一个散点图,并将其赋值给变量 g
>>> g = (g.set_axis_labels("Tip","Total bill(USD)").set(xlim=(0,10),ylim=(0,100))) 
# 连续调用了 set_axis_labels() 和 set() 方法来设置坐标轴标签、坐标轴范围等自定义设置

>>> plt.title("title")
>>> plt.show(g) 
# 使用 plt.title() 方法设置了图形的标题,并通过 plt.show() 函数显示图形

1. Dados

>>> import pandas as pd
>>> import numpy as np
# 导入 pandas 和 numpy 库,并创建了一个形状为 (10, 12) 的随机数组 uniform_data
>>> uniform_data = np.random.rand(10, 12)
# 使用 np.random.rand(10, 12) 创建一个形状为 (10, 12) 的随机数组赋值给变量 uniform_data。这个数组中的元素是从 0 到 1 之间的随机数
>>> data = pd.DataFrame({
    
    'x':np.arange(1,101), 'y':np.random.normal(0,4,100)})
# 使用 pd.DataFrame() 函数创建一个 DataFrame 对象 data。在创建过程中,使用字典类型的数据结构来指定要构建的 DataFrame 的列名和对应的数据

  Seaborn fornece conjuntos de dados integrados. Dois conjuntos de dados de exemplo são carregados abaixo: titanic e iris:

>>> titanic = sns.load_dataset("titanic")
# 加载 "titanic" 数据集
# 这里使用 sns.load_dataset() 函数加载了名为 "titanic" 的数据集,并将其赋值给变量 titanic。该数据集包含有关泰坦尼克号乘客的信息,如乘客等级、性别、年龄、是否存活等
>>> iris = sns.load_dataset("iris")
# 这里使用 sns.load_dataset() 函数加载了名为 "iris" 的数据集,并将其赋值给变量 iris。这个数据集记录了鸢尾花的一些测量数据,包括花萼长度、花萼宽度、花瓣长度、花瓣宽度以及鸢尾花的类别(山鸢尾、变色鸢尾和维吉尼亚鸢尾)

2. Aparência da tela

  Agora criamos um canvas de tamanho (5, 6) e um subplot , usando a função plt.subplots() para criar um canvas e retornar uma tupla contendo o canvas e os subplots . O parâmetro figsize=(5,6) especifica o tamanho da tela como 5 polegadas de largura e 6 polegadas de altura.

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

2.1 Estilo marítimo

  A seguir, definimos alguns parâmetros do Matplotlib usando a biblioteca Seaborn para definir ou redefinir os valores padrão . Com essas configurações, podemos controlarEstilo padrão para plotagemeParâmetros Matplotlib

>>> sns.set() # 使用 sns.set() 函数将 Seaborn 库的默认参数设置为默认值
>>> sns.set_style("whitegrid") 
# 使用 sns.set_style() 函数将 Seaborn 的样式设置为 "whitegrid",即白色网格样式
# 设置或重置 Seaborn 默认值
>>> sns.set_style("ticks", {
    
    "xtick.major.size":8,"ytick.major.size":8})
# 设置 matplotlib 参数
>>> sns.axes_style("whitegrid")
# 设置 matplotlib 参数

2.2 Função de contexto

  Também podemos usar a biblioteca Seaborn para configurar o contexto e definir alguns parâmetros. Ao definir o contexto e os parâmetros relacionados , você podeControle o estilo geral e o tamanho dos elementos do gráfico.

>>> sns.set_context("talk") # 将上下文设置为 "talk"
# 使用 sns.set_context() 函数将上下文设置为 "talk"
>>> sns.set_context("notebook",font_scale=1.5,rc={
    
    "lines.linewidth":2.5}) # 将上下文设置为"notebook",缩放字体,覆盖参数映射
# 使用 sns.set_context() 函数将上下文设置为 "notebook",这将恢复默认的上下文设置
# font_scale=1.5 参数将字体缩放比例设置为 1.5 倍
# rc={"lines.linewidth": 2.5} 参数将覆盖参数映射,将线条宽度设置为 2.5

2.3 Paleta

  Agora é hora de definir as cores da paleta usando a biblioteca Seaborn .

>>> sns.set_palette("husl",3) # 定义调色板
# 定义调色板为 "husl" 并设置颜色个数为 3
# 使用 sns.set_palette() 函数将调色板设置为 "husl",并指定要使用的颜色个数为 3
>>> sns.color_palette("husl") # 使用 with 临时设置调色板
# 使用 sns.color_palette() 函数在上下文管理器中临时设置调色板为 "husl"
# 返回一个包含 HUSL 调色板颜色的列表,供后续使用
>>> flatui = ["#9b59b6","#3498db","#95a5a6","#e74c3c","#34495e","#2ecc71"]
>>> sns.set_palette(flatui)
# 设置调色板
# 定义名为 flatui 的自定义调色板,其中包含了 6 种颜色的代码
# 通过 sns.set_palette() 函数将调色板设置为自定义的颜色列表。

3. Desenhando usando Seaborn

3.1 Grade de eixos

  tentarDesenhe diferentes tipos de gráficos usando a biblioteca Seaborn. Através dessas funções de desenho , podemos facilmente desenhar rasters de subgráficos , gráficos de classificação e modelos de regressão com relacionamentos condicionais .

>>> 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)
# 绘制适配分面栅格的数据与回归模型

  A seguir, usamos a biblioteca Seaborn para desenhar diferentes tipos de diagramas de relacionamento de emparelhamento e diagramas de distribuição bivariada , nomeadamenteTrace um subgráfico raster de relacionamentos de emparelhamentográfico de distribuição bivariadaeGráfico de estimativa de densidade do kernel

>>> 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,kind='kde')
# 绘制双变量分布

3.2 Vários gráficos

3.2.1 Gráfico de dispersão

  Use a biblioteca Seaborn para desenhar gráficos de dispersão com variáveis ​​categóricas .

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

  Ambas as funções são usadas para desenhar gráficos de dispersão em variáveis ​​categóricas , mas suasO layout é um pouco diferente. stripplot desenha todos os pontos de dispersão em uma linha, que podem se sobrepor; enquanto o swarmplot ajusta automaticamente a posição dos pontos de dispersão para evitar sobreposição .


3.2.2 Gráfico de barras

  Use a biblioteca Seaborn para desenhar um gráfico de barras com glifos de dispersão ,Usado para exibir estimativas pontuais e intervalos de confiança

>>> sns.barplot(x="sex",y="survived",hue="class",data=titanic)
# 用散点图示符显示点估计值和置信区间

  Este gráfico de barras representa uma barra em cada nível de cada variável categórica ("sexo" aqui), eAs estimativas pontuais correspondentes e os intervalos de confiança são mostrados através do glifo de dispersão


3.2.3 Gráfico de contagem

Um gráfico de contagem foi desenhado   usando a biblioteca Seaborn ,Usado para exibir o número de observações

>>> sns.countplot(x="deck",data=titanic,palette="Greens_d")
# 显示观测数量
# 使用 sns.countplot() 函数绘制计数图

  em,x="deck" significa que a variável no eixo x é a coluna "deck", data=titanic especifica o conjunto de dados como titanic, paleta="Greens_d" define a paleta como "Greens_d".
  Este gráfico de contagem traça barras em diferentes níveis da coluna "deck" e exibe o número de observações em cada barra .


3.2.4 Gráfico de pontos

  Use a biblioteca Seaborn para desenhar um histograma mostrando estimativas pontuais e intervalos de confiança .

# 用柱状图显示点估计和置信区间
>>> sns.pointplot(x="class",y="survived",hue="sex", data=titanic, palette={
    
    "male":"g","female":"m"},markers=["^","o"],linestyles=["-","--"])

  Entre eles, x="class" significa que a variável no eixo x é a coluna "classe", y="sobreviveu" significa que a variável no eixo y é a coluna "sobreviveu", hue="sexo" significa agrupamento de acordo com a coluna "sexo", data=titanic especifica que o conjunto de dados é titânico. paleta={“masculino”: “g”, “feminino”: “m”} Defina a cor da classificação de gênero, marcadores=[“^”, “o”] Defina o estilo de marca de estimativa de ponto, estilos de linha=[“- ”, "–"] Define o estilo de linha para o intervalo de confiança.
  Este histograma representa barras em cada nível de cada variável categórica (aqui "classe") , enquantoA altura de cada barra representa a média observada do nível correspondente. Ao mesmo tempo, estimativas pontuais e intervalos de confiança para diferentes sexos são mostrados por meio de estimativas pontuais e intervalos de confiança .


3.2.5 Gráfico de caixa

  Desenhe box plots usando a biblioteca Seaborn

>>> sns.boxplot(x="alive",y="age",hue="adult_male",data=titanic) # 箱形图
# 使用 sns.boxplot() 函数绘制箱形图
# 其中,x="alive" 表示 x 轴上的变量是 "alive" 列,y="age" 表示 y 轴上的变量是 "age" 列,hue="adult_male" 表示根据 "adult_male" 列进行分组,data=titanic 指定数据集为 titanic

>>> sns.boxplot(data=iris,orient="h") # 箱形图
# 使用 sns.boxplot() 函数绘制箱形图。其中,data=iris 指定数据集为 iris,orient="h" 设置箱形图为水平方向
# 该箱形图绘制了数据集 iris 中所有数值型变量的箱形图,以观察它们的分布情况

3.2.6 Enredo de violino

  Use a biblioteca Seaborn para desenhar um enredo de violino :
  Use a função sns.violinplot() para desenhar um gráfico de violino. Entre eles, x="idade" significa que a variável no eixo x é a coluna "idade", y="sexo" significa que a variável no eixo y é a coluna "sexo", hue="sobreviveu" significa agrupamento de acordo com a coluna "sobreviveu", data=titanic especifica que o conjunto de dados é titânico.

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

  Este gráfico de violino representa diferentes idades ("idade"), gênero ("sexo") e sobrevivência ("sobreviveu") para mostrar a distribuição dessas variáveis .


3.3 Gráfico de regressão

  Gráficos de dispersão foram desenhados usando a biblioteca Seaborn e ajustados usando um modelo de regressão linear.

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

  Use a função sns.regplot() para desenhar um gráfico de dispersão e ajustar os dados usando um modelo de regressão linear . Entre eles, x="sepal_width" indica que a variável no eixo x é a coluna "sepal_width", y="sepal_length" indica que a variável no eixo y é a coluna "sepal_length", data=iris especifica o conjunto de dados como íris, ax=ax é opcional Selecione o parâmetro para desenhar o gráfico no eixo de coordenadas especificado (ax é um objeto de eixo).
  Este gráfico de dispersão irá traçar pontos com base nos valores de "sepal_width" e "sepal_length" e ajustar um modelo de regressão linear no gráfico de dispersão para mostrar a relação linear entre eles


3.4 Mapa de distribuição

  Use a biblioteca Seaborn para desenhar gráficos de distribuição univariada :

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

  Use a função sns.distplot() para desenhar um gráfico de distribuição univariada , onde data.y se refere à coluna "y" no conjunto de dados, kde=False significa não exibir a curva de estimativa de densidade do kernel, color="b" significa para definir a cor como azul .

  Este gráfico de distribuição univariada iráUse um histograma para representar a distribuição da coluna “y”, você pode exibir a curva de estimativa de densidade do kernel ao mesmo tempo ajustando o parâmetro kde e também pode alterar a cor do histograma modificando o parâmetro color .


3.5 Diagrama matricial

  Use a biblioteca Seaborn para desenhar mapas de calor :

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

  Use a função sns.heatmap() para desenhar um mapa de calor, onde uniform_data são os dados a serem desenhados, vmin=0 significa definir o valor mínimo do mapa de cores como 0 e vmax=1 significa definir o valor máximo da cor mapear para 1 .

  Este mapa de calor iráDe acordo com o tamanho numérico de uniform_data, ele é apresentado como quadrados de cores diferentes no gráfico, e a profundidade da cor indica o tamanho do valor numérico.. A extensão do mapa de cores pode ser controlada definindo os parâmetros vmin e vmax.


4. Personalização profunda

4.1 Objeto 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轴的限制和刻度

4.2 Gráficos

>>> 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()
# 调整子图参数

5. Exibir ou salvar gráficos

  Deve-se observar que a função savefig() deve ser chamada antes da função show(), pois a função show() limpará a janela da figura atual .
  Ao salvar uma imagem,O fundo pode ficar transparente definindo o parâmetro transparente=True, ou seja, a imagem salva não contém fundo branco

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

5.1 Fechar e limpar

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

  tem que estar ciente é,As funções cla() e clf() apenas limpam o objeto gráfico atual, enquanto a função close() fecha toda a janela gráfica

Acho que você gosta

Origin blog.csdn.net/m0_65748531/article/details/132353925
Recomendado
Clasificación