Python使用Matplotlib绘制多条曲线及3D平面的完整指南

键盘旁的猫
键盘旁的猫
发布时间:2026-10-13| 6人浏览过
原创

本文详细介绍如何利用Python的Matplotlib库在单图中绘制多条数据曲线。内容涵盖基础线条绘制、不同线型(实线、虚线、点划线等)的应用、数据点标记的添加以及透明度、颜色等属性设置。此外,还扩展讲解了如何在二维坐标系中绘制直线,以及在三维空间中构建和展示平面,提供完整的代码示例与参数详解。

Matplotlib多曲线绘制基础

以下内容将直接展示相关代码实现,无需过多铺垫。


import matplotlib.pyplot as plt
import numpy as np
 
data1 = np.loadtxt('/data_1/SSD/caffe/tools/extra/DSOD300_VOC0712_DSOD300_300x300.log.test')
data2 = np.loadtxt('/data_1/SSD/caffe/tools/extra/DSOD300_VOC0712_DSOD300_300x300.log.train')
 
plt.title('Result Analysis')
 
plt.plot(data1[:,0], data1[:,2], color='skyblue', label='y1')
plt.plot(data2[:,0], data2[:,3], color='blue', label='y2')
plt.legend()
 
plt.xlabel('x')
plt.ylabel('y')
plt.show()

运行上述代码后的输出效果如下所示:

不同线型风格的应用

接下来,我们在图表中添加不同线型风格的线条,以展示多样化的视觉效果。


import matplotlib.pyplot as plt
import numpy as np
 
data1 = np.loadtxt('/data_1/project_test/teest1.txt')
data2 = np.loadtxt('/data_1/project_test/teest2.txt')
data3 = np.loadtxt('/data_1/project_test/teest3.txt')
 
plt.title('Result Analysis')
 
plt.plot(data1[:,0], data1[:,1], color='skyblue', label='y1',ls='-.')#ls或linestyle
plt.plot(data2[:,0], data2[:,1], color='green', label='y2',ls=':')
plt.plot(data3[:,0], data3[:,1], color='red', label='y3',ls='steps')
plt.legend()
 
plt.xlabel('x')
plt.ylabel('y')
plt.show()

数据点标记的添加

进一步地,我们在曲线上添加特定的数据点标记,以增强数据的可读性。


import matplotlib.pyplot as plt
import numpy as np
 
data1 = np.loadtxt('/data_1/project_test/teest1.txt')
data2 = np.loadtxt('/data_1/project_test/teest2.txt')
data3 = np.loadtxt('/data_1/project_test/teest3.txt')
 
plt.title('Result Analysis')
 
plt.plot(data1[:,0], data1[:,1], color='skyblue', label='y1',ls='-.',marker='*')
plt.plot(data2[:,0], data2[:,1], color='green', label='y2',ls=':',marker='+')
plt.plot(data3[:,0], data3[:,1], color='red', label='y3',ls='steps',marker='D')
plt.legend()
 
plt.xlabel('x')
plt.ylabel('y')
plt.show()

综上所述,通过调整参数可以灵活控制图表的显示细节。

plt.plot()参数详解

关于线型(linestyle或简写ls)的常用设置包括:实线使用'-',破折线使用'--',点划线使用'-.',以及虚线使用':'。

plt.plot()函数支持丰富的参数设置,具体属性及其含义如下: - alpha:控制透明度,取值0(完全透明)到1(不透明)。 - animated:布尔值,[True, False]。 - antialiased或aa:布尔值,[True, False]。 - clip_box:matplotlib.transform.Bbox实例。 - clip_on:布尔值,[True, False]。 - clip_path:Path实例和Transform实例,或Patch。 - color或c:设置线条颜色。 - contains:命中测试函数。 - dash_capstyle:['butt', 'round', 'projecting']。 - dash_joinstyle:['miter', 'round', 'bevel']。 - dashes:由on/off ink组成的序列(单位:点)。 - data:数据源,包含np.array xdata和np.array ydata。 - figure:画板对象,即matplotlib.figure.Figure实例。 - label:图例标签。 - linestyle或ls:线型风格,可选['-', '--', '-.', ':', 'steps', ...]。 - linewidth或lw:线条宽度,浮点数值(单位:点)。 - lod:布尔值,[True, False]。 - marker:数据点标记样式,可选['+', ',', '.', '1', '2', '3', '4']。 - markeredgecolor或mec:标记边缘颜色,支持任意matplotlib颜色。 - markeredgewidth或mew:标记边缘宽度,浮点数值(单位:点)。 - markerfacecolor或mfc:标记填充颜色,支持任意matplotlib颜色。 - markersize或ms:标记大小,浮点数值。 - markevery:[None, integer (startind, stride)]。 - picker:用于交互式线条选择。 - pickradius:线条选择半径。 - solid_capstyle:['butt', 'round', 'projecting']。 - solid_joinstyle:['miter', 'round', 'bevel']。 - transform:matplotlib.transforms.Transform实例。 - visible:布尔值,[True, False]。 - xdata:x轴数据,np.array。 - ydata:y轴数据,np.array。

zorder:用于控制绘图堆叠顺序的任意数值。

直线与3D平面绘制拓展

补充拓展内容:Python绘制直线与3D平面的实例代码。

二维直线绘制示例

以下是绘制二维直线的示例代码。


from mpl_toolkits.axisartist.axislines import SubplotZero
import matplotlib.pyplot as plt
import numpy as np
 
fig = plt.figure(1)
ax = SubplotZero(fig, 111)
fig.add_subplot(ax)
 
for direction in ["xzero", "yzero"]:
  # adds arrows at the ends of each axis
  ax.axis[direction].set_axisline_style("-|>")
 
  # adds X and Y-axis from the origin
  ax.axis[direction].set_visible(True)
 
for direction in ["left", "right", "bottom", "top"]:
  # hides borders
  ax.axis[direction].set_visible(False)
  
plt.text(-2, 2, r"y=kx+b",
     horizontalalignment='center', fontsize=20)  
  
x = np.linspace(-2,2,100)  
   
k=-1
b=0  
  
y = k*x + b
 
ax.plot(x, y)
plt.show()

三维平面绘制示例

以下是绘制三维平面的示例代码。


import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
 
fig = plt.figure()
ax = fig.gca(projection='3d')
 
# Make data.
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
a1 = 2
a2 = 1
Z = a1*X+a2*Y
 
# Plot the surface.
surf = ax.plot_surface(X, Y, Z, cmap=cm.Blues,
            linewidth=0, antialiased=False)
 
ax.set_xlabel(r'$x_1$',fontsize = 20, color = 'blue')
ax.set_ylabel(r'$x_2$',fontsize = 20, color = 'blue')
ax.set_zlabel(r'$x_3$',fontsize = 20, color = 'blue')

以上就是Python通过Matplotlib在一个图中绘制多条线、添加标记以及绘制直线和平面的完整实例分享,希望能为读者提供参考,并欢迎大家继续支持本站获取更多技术内容。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。