Matplotlib是一个强大的绘图库,用于创建各种类型的图表和可视化。它提供了丰富的绘图辅助功能,用于自定义图形的外观、标签、注释和其他视觉元素。根据具体任务和数据可视化要求,可以选择适当的辅助功能来改善图表的外观和可读性。

1、添加标题和轴标签

使用 plt.title("标题文本") 方法来添加图表标题。使用 plt.xlabel("X轴标签") plt.ylabel("Y轴标签") 方法来添加X轴和Y轴的标签。常用参数如下,

函数

描述

plt.title( label, loc='center', pad=None, 

fontsize=None, color=None,

 style=None, weight=None )

设置图表的标题。

label 是标题文本;

loc 设置标题位置;

pad 设置标题与图表顶部的距离;

fontsize 设置字体大小;

color 设置字体颜色;

style 设置字体样式;

weight 设置字体粗细。

plt.xlabel( xlabel, labelpad=None, 

loc=None, fontsize=None, color=None )

设置x轴的标签。

xlabel 是x轴标签文本;

labelpad 设置标签与轴的距离;

loc 设置标签位置;

fontsize 设置字体大小;

color 设置字体颜色。

plt.ylabel( ylabel, labelpad=None, 

loc=None, fontsize=None, color=None )

设置y轴的标签。

ylabel 是y轴标签文本;

labelpad 设置标签与轴的距离;

loc 设置标签位置;

fontsize 设置字体大小;

color 设置字体颜色。

使用示例:

import matplotlib.pyplot as plt

# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# 绘制线图
plt.plot(x, y)

# 设置图表标题和轴标签
plt.title('cjavapy', loc='left', fontsize='large', color='blue', style='italic', weight='bold')
plt.xlabel('X Axis', labelpad=15, fontsize='medium', color='green')
plt.ylabel('Y Axis', labelpad=20, fontsize='medium', color='red')

# 使用 plt.draw() 显示画布
plt.draw()
# 显示图表
plt.show()

2、 添加图例

使用 plt.legend() 添加图例,通常在绘图命令中使用 label 参数标识不同的数据系列。它可以帮助解释图表中的数据点或线条代表什么。常用参数如下,

参数

描述

label

为绘制的图形元素设置标签,

这些标签将在图例中显示。

loc

设置图例的位置,

如 'upper right', 'upper left', 'lower left', 'lower right', 'right' 等。

fontsize

设置图例中字体的大小。

title

给图例添加标题。

shadow

为图例添加阴影效果。

frameon

设置是否显示图例边框。

使用示例:

import matplotlib.pyplot as plt

# 创建数据
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 6, 8, 10]

# 绘制两条线,并为它们添加标签
plt.plot(x, y1, marker='o', label='Prime Numbers')
plt.plot(x, y2, marker='s', label='Even Numbers')

# 添加图例,并自定义图例
plt.legend(loc='upper left', fontsize='large', title='Number Types', shadow=True, frameon=True)

# 添加标题和轴标签
plt.title('cjavapy Legend')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 使用 plt.draw() 显示画布
plt.draw()
# 显示图表
plt.show()

3、显示网格线

显示网格线是通过 plt.grid() 函数实现的。网格线有助于更好地理解图表中的数据点和趋势。常用参数如下,

参数

描述

color

设置网格线的颜色。

linestyle

设置网格线的样式,如 '-', '--', '-.', ':'。

linewidth

设置网格线的宽度。

axis

指定要显示网格线的轴,

可选值为 'x' , 'y' , 'both'。

使用示例:

import matplotlib.pyplot as plt

# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# 绘制线图
plt.plot(x, y)

# 显示网格线并自定义其外观
plt.grid(True, color='gray', linestyle='--', linewidth=0.5, axis='both')

# 添加标题和轴标签
plt.title('cjavapy Custom Grid Lines')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 使用 plt.draw() 显示画布
plt.draw()
# 显示图表
plt.show()

4、添加注释

可以使用 plt.annotate() 函数在图表中添加注释。这个功能对于突出显示特定的数据点或向读者提供额外信息非常有用。常用参数如下,

import matplotlib.pyplot as plt

# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# 绘制线图
plt.plot(x, y)

# 添加注释
plt.annotate('Highest Point', xy=(5, 11), xytext=(3, 6),
             arrowprops=dict(facecolor='black', shrink=0.05))

# 添加标题和轴标签
plt.title('cjavapy with Annotation')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 使用 plt.draw() 显示画布
plt.draw()

# 显示图表
plt.show()

5、自定义轴刻度

可以自定义轴刻度以改善图表的可读性和美观性。这可以通过设置轴的刻度标签和刻度位置来完成。常用参数如下,

函数

描述

plt.xticks(ticks, labels, 

rotation, fontsize)

用于自定义x轴的刻度和标签。

ticks 指定刻度位置;

labels 指定刻度标签;

rotation 设置标签旋转角度;

fontsize 设置字体大小。

plt.yticks(ticks, labels, 

rotation, fontsize)

用于自定义y轴的刻度和标签。

ticks 指定刻度位置;

labels 指定刻度标签;

rotation 设置标签旋转角度;

fontsize 设置字体大小。

使用示例:

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 绘制图表
plt.plot(x, y)

# 自定义x轴刻度
plt.xticks(ticks=[0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi], 
           labels=['0', 'π/2', 'π', '3π/2', '2π'], 
           rotation=45, 
           fontsize='small')

# 自定义y轴刻度
plt.yticks(ticks=[-1, 0, 1], 
           labels=['Min', 'Zero', 'Max'], 
           rotation=30, 
           fontsize='medium')

# 添加标题和轴标签
plt.title('cjavapy')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 使用 plt.draw() 显示画布
plt.draw()
# 显示图表
plt.show()

6、控制轴的范围

可以通过 plt.xlim()plt.ylim() 函数控制 x 轴和 y 轴的显示范围。对于聚焦特定区域的数据或排除异常值非常有用。常用参数如下,

plt.xlim() 常用参数:

参数

描述

left

设置x轴的最小值

right

设置x轴的最大值

plt.ylim()常用参数:

参数

描述

bottom

设置y轴的最小值

top

设置y轴的最大值

使用示例:

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 20, 100)
y = np.sin(x)

# 绘制图表
plt.plot(x, y)

# 控制 x 轴和 y 轴的范围
plt.xlim(left=0, right=10)  # 设置 x 轴的范围为 0 到 10
plt.ylim(bottom=-0.5, top=0.5)  # 设置 y 轴的范围为 -0.5 到 0.5

# 添加标题和轴标签
plt.title('cjavapy')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 使用 plt.draw() 显示画布
plt.draw()
# 显示图表
plt.show()

7、利用子图(Subplots)

使用plt.subplots() 是用于创建一个带有多个子图(subplots)的图表布局的强大工具。对于比较不同数据集或展示数据的不同视角非常有用。常用参数如下,

参数

描述

nrows

子图网格中的行数。

ncols

子图网格中的列数。

figsize

整个图表的大小,

以英寸为单位,

格式为 (width, height)。

sharex

如果为 True,所有子图将共享 x 轴。

sharey

如果为 True,所有子图将共享 y 轴。

tight_layout

如果为 True,自动调整子图参数以适应图表区域。

subplot_kw

传递给 add_subplot 调用的关键字参数字典。

使用示例:

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 2 * np.pi, 400)
y1 = np.sin(x)
y2 = np.cos(x)

# 创建一个 2x2 的子图布局,并设置图表大小和子图共享轴
fig, axs = plt.subplots(2, 2, figsize=(8, 6), sharex=True, sharey=True)

# 在第一个子图上绘制
axs[0, 0].plot(x, y1)
axs[0, 0].set_title('cjavapy')

# 在第二个子图上绘制
axs[0, 1].plot(x, y2, 'tab:orange')

# 在第三个子图上绘制
axs[1, 0].plot(x, -y1, 'tab:green')

# 在第四个子图上绘制
axs[1, 1].plot(x, -y2, 'tab:red')

# 自动调整子图布局
plt.tight_layout()

# 使用 plt.draw() 显示画布
plt.draw()
# 显示图表
plt.show()

推荐文档