【Matplotlib】在 ax(Axes 对象)上使用 seaborn(简称 sns)绘图

avatar
作者
筋斗云
阅读量:0

在这里插入图片描述
axAxes 对象)上使用 seaborn(简称 sns)绘图时,你可以通过将 ax 作为参数传递给 seaborn 的绘图函数。这允许你将 seaborn 的图形绘制在指定的 ax 对象上,从而将多个图形组合在一个图形布局中。

示例代码

假设你有一个 Axes 对象 ax,并且想要在这个 ax 上绘制一个 seaborn 的图形:

import matplotlib.pyplot as plt import seaborn as sns import numpy as np import pandas as pd  # 生成一些随机数据 data = np.random.rand(100, 2) df = pd.DataFrame(data, columns=['X', 'Y'])  # 创建一个Matplotlib的Axes对象 fig, ax = plt.subplots()  # 使用seaborn在指定的Axes对象上绘图 sns.scatterplot(data=df, x='X', y='Y', ax=ax)  # 设置标题 ax.set_title('Scatter Plot using Seaborn on Axes')  # 显示图形 plt.show() 

解释:

  1. fig, ax = plt.subplots(): 创建一个 Figure 和一个 Axes 对象。
  2. sns.scatterplot(..., ax=ax): 在指定的 Axes 对象 ax 上绘制一个散点图。ax=ax 这个参数告诉 seaborn 将图形绘制在这个 ax 上,而不是创建一个新的图形。
  3. ax.set_title('...'): 设置 ax 的标题。

你可以使用这种方法在一个图形中绘制多个子图或者控制每个子图的布局和样式。这种方式结合了 Matplotlib 的灵活性和 Seaborn 的高层次 API,适用于复杂的图形布局需求。

在这里插入图片描述

import matplotlib.pyplot as plt import seaborn as sns import numpy as np  # 生成一些随机数据 data1 = np.random.randn(1000) data2 = np.random.randn(1000)  # 创建一个包含两个子图的布局,分成一行两列 fig, axs = plt.subplots(1, 2, figsize=(12, 6))  # 在第一个子图上绘制KDE图 sns.kdeplot(data1, ax=axs[0]) axs[0].set_title('KDE of Data 1')  # 在第二个子图上绘制KDE图 sns.kdeplot(data2, ax=axs[1]) axs[1].set_title('KDE of Data 2')  # 调整子图布局 plt.tight_layout()  # 显示图形 plt.show() 

解释:

  1. fig, axs = plt.subplots(1, 2, figsize=(12, 6)): 创建一个包含两个子图的布局,分成一行两列,并指定图形大小。
  2. sns.kdeplot(data1, ax=axs[0]): 在第一个子图 axs[0] 上绘制数据 data1 的 KDE 图。
  3. sns.kdeplot(data2, ax=axs[1]): 在第二个子图 axs[1] 上绘制数据 data2 的 KDE 图。
  4. plt.tight_layout(): 自动调整子图布局,以防止子图重叠。

你可以复制并在本地运行这段代码。这样会生成两个并排的 KDE 图,分别展示 data1data2 的分布情况。如果有其他问题或需要进一步帮助,请随时告诉我!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!