pin_drop当前位置:知识文库 ❯ 图文

matplotlib折线图plot教程 - 参数详解与代码示例

一、概述

plt.plot()是matplotlib最核心的绘图函数,用于绘制折线图。折线图适合展示数据随时间或有序维度的变化趋势,是最常用的数据可视化图表类型。

plot()支持单线和多线绘制、自定义线型、颜色、标记点等丰富的样式配置,是数据分析师和科研人员必备的工具。

二、基本语法

代码示例

plt.plot(x, y, fmt, **kwargs)
ax.plot(x, y, fmt, **kwargs)

fmt是格式字符串,可以快速指定颜色、线型和标记,例如'ro--'表示红色虚线圆标记。

三、参数说明

参数 类型 默认值 说明
x array_like 自动索引 X轴数据
y array_like 必填 Y轴数据
fmt str '' 格式字符串(颜色+线型+标记)
color str 自动 线条颜色
linestyle/ls str '-' 线型
linewidth/lw float 1.5 线宽
marker str None 数据点标记
markersize/ms float 6 标记大小
label str None 图例标签
alpha float 1 透明度(0-1)

常用格式字符串速查表

格式 颜色 格式 线型 格式 标记
'b'蓝色 '-'实线 'o'圆圈
'g'绿色 '--'虚线 's'方块
'r'红色 '-.'点划线 '^'三角
'c'青色 ':'点线 'D'菱形
'm'品红 ''无线 '*'星形
'k'黑色 '+'加号

四、代码示例

示例1:基本折线图

绘制每月温度变化的基本折线图:

代码示例

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.arange(1, 13)
y = [23, 25, 30, 35, 40, 38, 42, 44, 39, 32, 28, 24]

# 绘制基本折线图
plt.figure(figsize=(8, 5))
plt.plot(x, y)
plt.title('Monthly Temperature')
plt.xlabel('Month')
plt.ylabel('Temperature (\u00b0C)')
plt.grid(True, alpha=0.3)
plt.savefig('basic_line.png', dpi=100, bbox_inches='tight')
print("基本折线图已保存")

示例2:多线对比与样式自定义

在同一张图上绘制多条不同样式的曲线,用于对比分析:

代码示例

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 50)

plt.figure(figsize=(10, 5))

# 不同样式的线条
plt.plot(x, np.sin(x), 'b-o', label='sin(x)', markersize=4, linewidth=2)
plt.plot(x, np.cos(x), 'r--s', label='cos(x)', markersize=4, linewidth=2)
plt.plot(x, np.sin(x) * 0.5, 'g:.', label='0.5*sin(x)', linewidth=2)

plt.title('Trigonometric Functions')
plt.xlabel('x (radians)')
plt.ylabel('y')
plt.legend(loc='upper right')
plt.grid(True, alpha=0.3)
plt.xlim(0, 2 * np.pi)
plt.ylim(-1.2, 1.2)
plt.savefig('multi_line.png', dpi=100, bbox_inches='tight')
print("多线对比图已保存")

示例3:实际数据趋势图

模拟股票价格走势,添加填充区域和注释标记:

代码示例

import matplotlib.pyplot as plt
import numpy as np

# 模拟股票价格数据
days = np.arange(1, 31)
np.random.seed(42)
price_a = 100 + np.cumsum(np.random.randn(30) * 2)
price_b = 100 + np.cumsum(np.random.randn(30) * 1.5)

fig, ax = plt.subplots(figsize=(10, 5))

# 绘制两条价格线
ax.plot(days, price_a, color='#2196F3', linewidth=2, label='Stock A')
ax.plot(days, price_b, color='#FF5722', linewidth=2, label='Stock B')

# 填充区域
ax.fill_between(days, price_a, price_b, alpha=0.1, color='gray')

ax.set_title('Stock Price Trend (30 Days)')
ax.set_xlabel('Day')
ax.set_ylabel('Price ($)')
ax.legend()
ax.grid(True, alpha=0.3)

# 添加注释
max_day = days[np.argmax(price_a)]
ax.annotate(f'Max: {price_a.max():.1f}',
            xy=(max_day, price_a.max()),
            xytext=(max_day+2, price_a.max()+5),
            arrowprops=dict(arrowstyle='->', color='black'))

plt.savefig('stock_trend.png', dpi=100, bbox_inches='tight')
print("股票趋势图已保存")

五、实际应用场景

  • 股票分析:使用折线图展示收盘价走势,配合均线和技术指标

  • 服务器监控:使用折线图展示CPU/内存使用率随时间变化,设置阈值告警线

  • 实验报告:使用折线图对比不同算法的性能指标,如准确率、损失函数等

六、折线图样式参数对比

参数 作用 示例值
color 线条颜色 'red', '#FF5722', (0.8,0.2,0.1)
linestyle 线型 '-', '--', '-.', ':'
linewidth 线宽 1, 2, 3
marker 标记样式 'o', 's', '^', 'D'
markersize 标记大小 4, 6, 8
alpha 透明度 0.3, 0.5, 1.0
label 图例标签 '数据A'

七、注意事项

  • 自动索引:只提供y不提供x时,x默认为0, 1, 2, ...的整数索引

  • 图例区分:多线绘制时,每条线应设置不同的label以便图例区分

  • 密集数据:数据点过多时,建议不使用marker标记,否则图形会过于密集

小贴士:使用fill_between()可以填充两条线之间的区域,增强视觉效果,常用于展示置信区间或数据差异。

八、小结

  • plt.plot()是最核心的绘图函数,用于绘制折线图

  • fmt格式字符串同时指定颜色、线型和标记,如'ro--'表示红色虚线圆标记

  • 多线绘制时设置label参数,配合plt.legend()显示图例

  • fill_between()可以填充两条线之间的区域,增强视觉效果

九、练习题

练习1

绘制y=x²和y=x³在[-5,5]范围内的折线图,使用不同颜色和线型区分。

练习2

绘制过去7天的气温变化折线图,包含最高温和最低温两条线,并填充中间区域。

练习3

使用plot()绘制正弦波,添加网格、标题、坐标轴标签,并标注最大值点。

常见问题

plot()和scatter()有什么区别?

plot()主要用于绘制折线图,将数据点用线段连接起来,适合展示趋势变化。scatter()用于绘制散点图,每个点独立显示,适合展示两个变量的关系。plot()渲染速度更快,scatter()支持每个点独立设置颜色和大小。

如何设置图表的尺寸和分辨率?

使用plt.figure(figsize=(宽度, 高度))设置画布尺寸(单位:英寸)。保存时通过plt.savefig('文件名.png', dpi=数值)设置分辨率,dpi=100适合屏幕显示,dpi=300适合打印出版。

如何自定义图例的位置?

使用plt.legend(loc='位置参数')设置图例位置。常用值:'upper right'(右上)、'upper left'(左上)、'lower right'(右下)、'lower left'(左下)、'center'(居中)、'best'(自动选择最佳位置)。

如何添加文本注释到图表上?

使用ax.annotate()函数添加注释。参数包括:文本内容、xy(被注释点坐标)、xytext(注释文本位置)、arrowprops(箭头样式)。也可以用plt.text()在指定坐标添加简单文本。

标签: 折线图 plt.plot matplotlib 线型样式 趋势图 fill_between 多线对比

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: matplotlib库简介与安装教程 - Python数据可视化入门 下一篇: matplotlib柱状图bar教程 - 分组堆叠水平柱状图详解

poll相关推荐