Matplotlib图表定制:多子图和多图形展示

Matplotlib允许用户在同一图表中创建多个子图,以及在同一图表中显示多个图形。

在本篇文章中,我们将详细介绍这两种功能,并通过案例演示,帮助你更好地利用Matplotlib进行图表定制。

1、创建包含多个子图的图表

Matplotlib提供了plt.subplots方法,方便用户创建包含多个子图的图表。

以下是一个简单的例子,演示如何使用Matplotlib创建包含4个子图的图表

%matplotlib
import matplotlib.pyplot as plt
import numpy as np

# 创建示例数据
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(2 * x)
y4 = np.cos(2 * x)
# 创建包含4个子图的图表
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8))

# 在第一个子图中绘制sin(x)曲线
axes[0, 0].plot(x, y1, label='sin(x)')
axes[0, 0].set_title('Sin')
axes[0, 0].legend()

# 在第二个子图中绘制cos(x)曲线
axes[0, 1].plot(x, y2, label='cos(x)', color='orange')
axes[0, 1].set_title('Cos')
axes[0, 1].legend()

# 在第三个子图中绘制sin(2x)曲线
axes[1, 0].plot(x, y3, label='sin(2x)', color='green')
axes[1, 0].set_title('Sin(2x)')
axes[1, 0].legend()

# 在第四个子图中绘制cos(2x)曲线
axes[1, 1].plot(x, y4, label='cos(2x)', color='red')
axes[1, 1].set_title('Cos(2x)')
axes[1, 1].legend()

# 调整子图之间的间距
plt.tight_layout()

# 显示图表
plt.show()

其中nrows=2, ncols=2 分别表示子图的分布,2行2列;
axes[1, 1]是指定子图的位置,从0开始,axes[1, 1]表示第二行第二列的位置

在这里插入图片描述
同理如果想创建2X3的分布,那就nrows=2, ncols=3,且最后一个位置为axes[1, 2]

并且每个位置的子表类型随意,可以折线,柱状等。代码如下:


%matplotlib
import matplotlib.pyplot as plt
import numpy as np

# 创建示例数据
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(2 * x)
y4 = np.cos(2 * x)

# 创建包含4个子图的图表
fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(10, 8))

# 在第一个子图中绘制sin(x)曲线
axes[0, 0].plot(x, y1, label='sin(x)')
axes[0, 0].set_title('Sin')
axes[0, 0].legend()

# 在第二个子图中绘制cos(x)曲线
axes[0, 1].plot(x, y2, label='cos(x)', color='orange')
axes[0, 1].set_title('Cos')
axes[0, 1].legend()

# 在第三个子图中绘制sin(2x)曲线
axes[1, 0].plot(x, y3, label='sin(2x)', color='green')
axes[1, 0].set_title('Sin(2x)')
axes[1, 0].legend()

# 在第四个子图中绘制cos(2x)曲线
axes[1, 1].plot(x, y4, label='cos(2x)', color='red')
axes[1, 1].set_title('Cos(2x)')
axes[1, 1].legend()

# 在第六个子图中绘制柱状图
# 生成示例数据
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 2, 5]

# 绘制柱状图
axes[1, 2].bar(categories, values, color='skyblue')
axes[1, 2].set_xlabel('category')
axes[1, 2].set_ylabel('value')
axes[1, 2].set_title('Histogram')

# 调整子图之间的间距
plt.tight_layout()

# 显示图表
plt.show()

第五个图没有绘制,所以是空的
在这里插入图片描述

2、在同一图表显示多个图形

Matplotlib允许用户在同一图表中显示多个图形,这可以通过多次调用绘图方法来实现。以下是一个示例:

%matplotlib
import matplotlib.pyplot as plt
import numpy as np

# 示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 在同一图表中显示sin和cos曲线
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)', linestyle='dashed', color='orange')

# 添加标题和图例
plt.title('Sin and Cos')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()

plt.show()

在这里插入图片描述
在这个例子中,我们通过两次调用plt.plot方法,在同一图表中绘制了sin和cos曲线,并设置了标题和图例。

通过这两种方法,你可以更灵活地组织和展示你的数据,使图表更具信息性。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值