Python子图设置y坐标范围

引言

在Python的数据可视化中,matplotlib是一个非常强大且常用的库。它提供了各种绘图功能,使我们能够以清晰、易于理解的方式呈现数据。在绘制图表时,我们通常需要设置坐标轴的范围,以确保数据的可视化效果更好。本文将介绍如何使用matplotlib中的子图设置y坐标范围,以及一些相关的实例代码。

matplotlib子图

在matplotlib中,我们可以使用子图(subplot)来创建多个图表,并将它们组织在一个大的图表中。子图可以帮助我们在一个图像中同时展示多个相关的数据集。为了使用子图,我们需要使用plt.subplots()函数。该函数接受三个参数:nrows表示子图的行数,ncols表示子图的列数,figsize表示整个图表的大小。以下是一个创建2x2子图的示例:

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 6))

在上面的示例中,fig是一个Figure对象,axes是一个包含子图的2x2数组。我们可以使用axes[i, j]来访问子图中的每个元素。

子图设置y坐标范围

在子图中,我们可以使用set_ylim()函数来设置y坐标轴的范围。该函数接受两个参数:bottom表示y轴的下限,top表示y轴的上限。以下是一个使用set_ylim()函数设置y坐标范围的示例:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = x
y2 = x**2

fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(8, 6))
axes[0].plot(x, y1)
axes[1].plot(x, y2)

axes[0].set_ylim(0, 10)
axes[1].set_ylim(0, 100)

在上面的示例中,我们创建了两个子图,并分别绘制了y=x和y=x^2的曲线。然后,我们使用set_ylim()函数将第一个子图的y坐标范围设置为0到10,第二个子图的y坐标范围设置为0到100。

示例

下面我们将通过一个具体的示例来演示如何在子图中设置y坐标范围。假设我们要绘制一个甘特图,展示某个项目的任务进度。我们假设该项目有三个任务,分别是任务A、任务B和任务C。每个任务的开始时间和结束时间如下:

  • 任务A:开始时间为0,结束时间为5
  • 任务B:开始时间为3,结束时间为8
  • 任务C:开始时间为6,结束时间为10

我们可以使用matplotlib的子图功能来绘制这个甘特图,并设置y坐标范围为0到12。

import matplotlib.pyplot as plt

# 数据
tasks = ['Task A', 'Task B', 'Task C']
start_times = [0, 3, 6]
end_times = [5, 8, 10]

# 创建子图
fig, ax = plt.subplots(figsize=(8, 4))

# 绘制甘特图
for i, task in enumerate(tasks):
    ax.barh(task, end_times[i] - start_times[i], left=start_times[i], height=0.5, color='blue')

# 设置y坐标范围
ax.set_ylim(0, 12)

# 设置坐标轴标签
ax.set_xlabel('Time')
ax.set_ylabel('Tasks')

# 设置图表标题
ax.set_title('Gantt Chart')

plt.show()

上面的代码中,我们使用了barh()函数来绘制水平条形图。通过循环遍历任务列表,并根据每个任务的开始时间、结束时间和高度绘制条形图。然后,我们使用set_ylim()函数将y坐标范围设置为0到12。最后,我们设置了坐标轴标签和图表标题,并