使用Matplotlib绘制折线图需导入plt,准备数据后用plt.plot()绘图并plt.show()显示;可通过参数自定义线条颜色、样式、标记;添加标题、轴标签和图例以增强可读性;处理多数据集时建议使用不同样式区分线条,并合理布局子图避免混乱。

在Python中,使用Matplotlib绘制折线图的核心其实非常直接,它主要围绕着
matplotlib.pyplot
plt.plot()
要使用Matplotlib绘制折线图,我们通常会遵循一个清晰的步骤。首先,你需要导入
matplotlib.pyplot
plt
plt.plot()
plt.show()
一个基本的例子是这样的:
import matplotlib.pyplot as plt
import numpy as np
# 准备数据
x = np.linspace(0, 10, 100) # 从0到10生成100个均匀分布的点
y = np.sin(x) # 计算每个点的sin值
# 绘制折线图
plt.plot(x, y)
# 添加图表的基本元素
plt.title("简单的正弦曲线")
plt.xlabel("X轴数据")
plt.ylabel("Y轴数据 (sin(x))")
# 显示图表
plt.show()我个人在初学的时候,经常会忘记
plt.show()
plt.show()
plt.plot()
立即学习“Python免费学习笔记(深入)”;
当我们在展示数据趋势时,仅仅是把线画出来还不够,图表的“颜值”和信息承载能力很大程度上取决于线条的细节。自定义线条的样式、颜色和添加标记,能让你的折线图瞬间提升好几个档次,也能更好地区分不同的数据系列。我发现很多初学者会忽略这些细节,导致图表看起来比较单调,甚至难以区分。
在
plt.plot()
color
'red'
'blue'
'#FF0000'
linestyle
ls
'-'
'--'
'-.'
':'
linewidth
lw
marker
'o'
'x'
'^'
's'
markersize
ms
markeredgecolor
mec
markerfacecolor
mfc
举个例子,如果我们想画一条红色虚线,带有蓝色圆圈标记的折线图:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 30)
y = np.cos(x)
plt.plot(x, y, color='red', linestyle='--', linewidth=2,
marker='o', markersize=8, markeredgecolor='blue', markerfacecolor='lightblue')
plt.title("自定义样式的余弦曲线")
plt.xlabel("X轴")
plt.ylabel("Y轴 (cos(x))")
plt.grid(True) # 我个人很喜欢加网格线,能帮助读者更好地定位数据点
plt.show()你看,只是多加了几个参数,图表立刻就变得生动起来。我通常会根据数据的特点和想要强调的信息来选择合适的颜色和样式。比如,对比两组数据时,我会用两种对比鲜明的颜色;如果数据点本身很重要,我就会加上标记。
一张好的图表,除了数据本身,还需要清晰的上下文信息。标题、轴标签和图例就是这些不可或缺的“说明书”。没有它们,你的折线图可能只是一堆杂乱的线条,读者很难理解它到底在表达什么。我经常看到一些图表,数据是有了,但标题模糊,轴标签缺失,这无疑大大降低了图表的有效性。
plt.title()
plt.xlabel()
plt.ylabel()
plt.legend()
plt.legend()
plt.plot()
label
我们来完善一下之前的正弦曲线图,给它加上这些元素:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y_sin = np.sin(x)
y_cos = np.cos(x) # 再加一条余弦曲线来演示图例
plt.plot(x, y_sin, label='正弦曲线', color='blue', linestyle='-')
plt.plot(x, y_cos, label='余弦曲线', color='green', linestyle='--')
plt.title("正弦与余弦函数的对比") # 更具描述性的标题
plt.xlabel("角度 (弧度)")
plt.ylabel("函数值")
plt.legend() # 显示图例,它会自动找到所有带有label的plot
plt.grid(True, linestyle=':', alpha=0.7) # 我还喜欢用虚线和透明度较低的网格,不那么抢眼
plt.show()这里,
plt.legend()
plt.plot()
label
plt.legend(loc='upper right')
在实际的数据分析中,我们很少只处理一个数据集。通常,我们需要在同一张图表上比较多个数据系列的趋势,或者将不同的数据子集在不同的子图中展示。这对于洞察数据间的关系至关重要。我个人觉得,处理多个数据集时,最容易出现的问题就是图表变得混乱,难以阅读。
这里有一些我常用的最佳实践:
在同一张图上绘制多条线:
plt.legend()
twinx()
import matplotlib.pyplot as plt
import numpy as np
years = np.array([2010, 2011, 2012, 2013, 2014, 2015])
sales_region_a = np.array([100, 120, 150, 130, 180, 200])
sales_region_b = np.array([80, 110, 140, 160, 170, 190])
expenses = np.array([70, 85, 90, 100, 110, 120])
plt.figure(figsize=(10, 6)) # 设置图表大小,让多条线有更多空间
plt.plot(years, sales_region_a, label='区域A销售额', color='blue', marker='o')
plt.plot(years, sales_region_b, label='区域B销售额', color='green', marker='x')
plt.plot(years, expenses, label='总开销', color='red', linestyle='--', marker='s')
plt.title("不同区域销售额与总开销趋势")
plt.xlabel("年份")
plt.ylabel("金额 (万元)")
plt.xticks(years) # 确保X轴刻度只显示年份
plt.legend()
plt.grid(True, alpha=0.6)
plt.show()使用子图(Subplots): 当数据系列太多,或者它们的单位、尺度差异太大,以至于放在一张图上会变得拥挤或难以理解时,子图就是更好的选择。
plt.subplot()
plt.subplots()
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x) # 可能会有无穷大,需要处理
y4 = x**2
# 创建一个2x2的子图布局
fig, axes = plt.subplots(2, 2, figsize=(12, 8)) # fig是整个图,axes是子图的数组
# 绘制第一个子图
axes[0, 0].plot(x, y1, color='blue')
axes[0, 0].set_title("正弦函数")
axes[0, 0].set_xlabel("X")
axes[0, 0].set_ylabel("sin(X)")
axes[0, 0].grid(True)
# 绘制第二个子图
axes[0, 1].plot(x, y2, color='green')
axes[0, 1].set_title("余弦函数")
axes[0, 1].set_xlabel("X")
axes[0, 1].set_ylabel("cos(X)")
axes[0, 1].grid(True)
# 绘制第三个子图 (这里为了避免tan的无穷大,我们只取一部分数据)
x_tan = np.linspace(-1.5, 1.5, 100)
y3_tan = np.tan(x_tan)
axes[1, 0].plot(x_tan, y3_tan, color='red')
axes[1, 0].set_title("正切函数")
axes[1, 0].set_xlabel("X")
axes[1, 0].set_ylabel("tan(X)")
axes[1, 0].set_ylim(-10, 10) # 限制Y轴范围,让图表更清晰
axes[1, 0].grid(True)
# 绘制第四个子图
axes[1, 1].plot(x, y4, color='purple')
axes[1, 1].set_title("平方函数")
axes[1, 1].set_xlabel("X")
axes[1, 1].set_ylabel("X^2")
axes[1, 1].grid(True)
plt.tight_layout() # 自动调整子图参数,使之填充整个图像区域,并避免重叠
plt.suptitle("多个数学函数的子图展示", y=1.02, fontsize=16) # 添加总标题
plt.show()我发现
plt.subplots()
plt.subplot()
Figure
Axes
plt.tight_layout()
以上就是python中如何使用matplotlib绘制折线图_Matplotlib绘制折线图入门教程的详细内容,更多请关注php中文网其它相关文章!
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号