pin_drop当前位置:知识文库 ❯ 图文
matplotlib折线图plot教程 - 参数详解与代码示例
一、概述
plt.plot()是matplotlib最核心的绘图函数,用于绘制折线图。折线图适合展示数据随时间或有序维度的变化趋势,是最常用的数据可视化图表类型。
plot()支持单线和多线绘制、自定义线型、颜色、标记点等丰富的样式配置,是数据分析师和科研人员必备的工具。
二、基本语法
代码示例
plt.plot(x, y, fmt, **kwargs)
ax.plot(x, y, fmt, **kwargs)
fmt是格式字符串,可以快速指定颜色、线型和标记,例如'ro--'表示红色虚线圆标记。
三、参数说明
常用格式字符串速查表
四、代码示例
示例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/内存使用率随时间变化,设置阈值告警线
-
实验报告:使用折线图对比不同算法的性能指标,如准确率、损失函数等
六、折线图样式参数对比
七、注意事项
-
自动索引:只提供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()在指定坐标添加简单文本。
本文涉及AI创作
内容由AI创作,请仔细甄别