【データ分析入門】Seaborn [散布図、棒グラフ、カウントチャート、ヒートマップ、箱ひげ図、バイオリンプロット]


  シーボーンmatplotlibをベースに開発エレガントで美しい統計グラフィックを描画するための高レベルのPython データ視覚化ライブラリ。
  次のエイリアスを使用してライブラリをインポートします。

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

  Seaborn を使用してグラフィックを作成するための基本的な手順:
  1.データの準備:データセットがプロットされていることを確認したいと思います。
  2.キャンバスの外観を設定します。グラフを作成する前に、背景色の設定軸範囲の調整など、キャンバスの外観を設定できます。これらの設定は Matplotlib を使用して行うことができます。   3. Seaborn 描画を使用する: Seaborn ライブラリをインポートし、その関数を使用してグラフィックを描画しますSeaborn は、多くの高度な描画機能とスタイル オプションも提供し、描画をよりシンプルかつ美しくします。   4.カスタム グラフィックス:グラフィックスをさらにカスタマイズする必要がある場合は、 Matplotlib の関数とメソッドを使用して個人設定を行うことができますSeaborn ライブラリは Matplotlib に基づいているため、次のことができます。

Seaborn プロット後に Matplotlib 機能を使用してグラフィックをカスタマイズする

>>> 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. データ

>>> 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 は組み込みのデータセットを提供します。以下に 2 つのサンプル データセット (titanic と iris) が読み込まれます。

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

2. キャンバスの外観

  次に、サイズ (5, 6) のキャンバスとサブプロットを作成しplt.subplots() 関数を使用してキャンバスを作成し、キャンバスとサブプロットを含むタプルを返しますfigsize=(5,6) パラメータは、キャンバスのサイズを幅 5 インチ、高さ 6 インチに指定します。

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

2.1 シーボーンのスタイル

  次に、Seaborn ライブラリを使用していくつかの Matplotlib パラメータを設定し、デフォルト値を設定またはリセットしますこれらの設定を通じて、次のことを制御できます。プロットのデフォルトのスタイルそして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 コンテキスト関数

Seaborn ライブラリを使用してコンテキストを設定し、いくつかのパラメーターを設定する  こともできますコンテキストと関連パラメータを設定することで、次のことができます。図面の全体的なスタイルと要素のサイズを制御します上。

>>> 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 パレット

  次に、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.Seabornを使った描画

3.1 軸グリッド

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

  次に、Seaborn ライブラリを使用して、さまざまなタイプのペア関係図と二変量分布図を描画しますペアごとの関係をプロットするためのサブプロット グリッド二変量分布プロットそしてカーネル密度推定プロット

>>> 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 多彩なグラフィックス

3.2.1 散布図

  Seaborn ライブラリを使用して、カテゴリ変数を使用して散布図を描画します

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

  どちらの関数もカテゴリ変数の散布図を描くために使用されますが、レイアウトが若干異なりますストリッププロットではすべての散布点が直線上に描画されるため、重なりが発生する可能性がありますが、スウォームプロットでは散布点の位置が重なりを避けるために自動的に調整されます


3.2.2 棒グラフ

  Seaborn ライブラリを使用して、散布図シンボルを含む棒グラフを描画します点推定値と信頼区間を表示するために使用されます

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

  この棒グラフは、各カテゴリ変数 (ここでは「性別」) の各レベルで棒をプロットします。対応する点推定値と信頼区間が散布図で表示されます


3.2.3 カウントグラフ

Seaborn ライブラリを  使用してカウント チャートを描画しました観測値の数を表示するために使用されます

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

  で、x="deck" は、x 軸の変数が "deck" 列であることを意味し、data=titanic はデータセットをタイタニックとして指定し、palette="Greens_d" はパレットを "Greens_d" に設定します。
  このカウント チャートは、「デック」列のさまざまなレベルにバーをプロットし各バーに観測値の数を表示します


3.2.4 ドットプロット

  Seaborn ライブラリを使用して、点推定値と信頼区間を示すヒストグラムを描画します

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

  このうち、x="class"はx軸の変数が「class」列であることを意味し、y="survived"はy軸の変数が「survived」列であることを意味し、hue="sex"はy軸の変数が「survived」列であることを意味します。 「性別」列に従ってグループ化することを意味し、data=titanic はデータセットがタイタニックであることを指定します。パレット={“男性”: “g”, “女性”: “m”} 性別分類の色を設定、マーカー=[“^”, “o”] 点推定のマークスタイルを設定、線スタイル=[“- ”、”-”] 信頼区間の線種を設定します。
  このヒストグラムは、各カテゴリ変数 (ここでは「クラス」) の各レベルでバーをプロットします各バーの高さは、対応するレベルの観察された平均を表します。同時に、さまざまな性別の点推定値と信頼区間が、点推定値と信頼区間によって表示されます


3.2.5 箱ひげ図

  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 ヴァイオリンプロット

  Seaborn ライブラリを使用してバイオリン プロットを描画します
  sns.violinplot() 関数を使用してバイオリン プロットを描画しますこのうち、x="age"はx軸の変数が「年齢」列であることを意味し、y="sex"はy軸の変数が「性別」列であることを意味し、hue="survived"はdata=titanic は、「survived」列に従ってグループ化することを意味し、データセットが titanic であることを指定します。

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

  バイオリン プロットは、さまざまな年齢 (「年齢」)、性別 (「性別」)、生存状態 (「生存」) に従って対応するバイオリン プロットをプロットし、これらの変数の分布を示します


3.3 回帰プロット

  Seaborn ライブラリを使用して散布図を描画し、線形回帰モデルを使用してフィッティングしました。

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

  sns.regplot() 関数を使用して散布図を描画し、線形回帰モデルを使用してデータを近似しますこのうち、x="sepal_width" は、x 軸の変数が "sepal_width" 列であることを示し、y="sepal_length" は、y 軸の変数が "sepal_length" 列であることを示し、data=iris は、データ セットは iris で、ax=ax はオプションです。指定した座標軸上にグラフを描画するためのパラメータを選択します (ax は軸オブジェクトです)。
  この散布図は、「sepal_width」と「sepal_length」の値に従って散布点をプロットし、散布図に線形回帰モデルを当てはめて、それらの間の線形関係を示します。


3.4 分布図

  Seaborn ライブラリを使用して一変量分布をプロットします

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

  sns.distplot() 関数を使用して一変量分布マップを描画します。ここで、 data.y はデータセットの「y」列を指し、kde=False はカーネル密度推定曲線を表示しないことを意味し、color="b" はカーネル密度推定曲線を表示しないことを意味します。色を青に設定します

  この一変量分布プロットは、「y」列の分布をヒストグラムとして表現します。kde パラメータを調整することでカーネル密度推定曲線を同時に表示できます。また、 color パラメータを変更することでヒストグラムの色を変更することもできます


3.5 マトリックス図

  Seaborn ライブラリを使用してヒート マップを描画します

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

  sns.heatmap() 関数を使用してヒート マップを描画します。uniform_data は描画するデータです。vmin=0 はカラー マップの最小値を 0 に設定することを意味し、vmax=1 はカラー マップの最大値を設定することを意味します。カラーマップを 1 にします

  このヒートマップは、uniform_data の数値サイズに応じて、グラフ上で異なる色の正方形として表示され、色の濃さが数値の大きさを示します。vmin および vmax パラメータを設定することで、カラー マッピングの範囲を制御できます。


4. 深いカスタマイズ

4.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轴的限制和刻度

4.2 グラフィックス

>>> 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. グラフィックの表示または保存

show() 関数は現在のグラフィックス ウィンドウをクリアするため、savefig() 関数は show() 関数の前に呼び出す必要があることに  注意してください
  画像を保存する際には、transparent=True パラメータを設定すると、背景を透明にすることができます。つまり、保存される画像に白い背景が含まれません。

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

5.1 閉じてクリアする

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

  認識しなければならないのは、cla() 関数と clf() 関数は現在のグラフィックス オブジェクトのみをクリアしますが、close() 関数はグラフィックス ウィンドウ全体を閉じます。

おすすめ

転載: blog.csdn.net/m0_65748531/article/details/132353925