Python数据可视化:NumPy与Matplotlib绘制各类函数及图形详解

顾星河
顾星河
发布时间:2026-10-15| 6人浏览过
原创

本文详细介绍如何使用Python的NumPy和Matplotlib库绘制多种函数图像。内容涵盖基础线性函数、正弦余弦波、激活函数(ReLU/Sigmoid)以及条形图、散点图、等高线图、饼图和极坐标图等常见图表类型的代码实现与参数设置,帮助开发者快速掌握数据可视化核心技能。

Matplotlib是Python中广泛使用的绘图库,通常与Num库配合使用以处理数值计算和图形渲染。

【引例】 绘制线性函数 y=2*x+5 的图像


import numpy as np
from matplotlib import pyplot as plt

#设置横坐标取值、确定函数表达式
x = np.arange(1, 11)
y = 2 * x + 5
#添加标题、横坐标、纵坐标标签
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
#画函数图像
plt.plot(x, y)
plt.show()

【运行结果】


如果需要函数图像以圆点呈现,而不是用线呈现,则需要将

plt.plot(x,y)改为plt.plot(x,y,'ob')

【运行结果】

正弦波 y=sin(x)


import numpy as np
from matplotlib import pyplot as plt

#设置横坐标取值、确定函数表达式
x = np.arange(0, 3*np.pi,0.1)
y = np.sin(x)
#添加标题、横坐标、纵坐标标签
plt.title("y=sin(x)")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
#画函数图像
plt.plot(x, y)
plt.show()

【运行结果】


余弦函数只需将
y = np.sin(x) 改为 y = np.cos(x)即可

subplot()函数

应用subplot()函数,在同一图中绘制不同的东西


# ReLU和Sigmoid激活函数示意图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches

#设置图片大小
plt.figure(figsize=(6, 4))

# x是1维数组,数组大小是从-10. 到10.的实数,每隔0.1取一个点
x = np.arange(-10, 10, 0.1)
# 计算 Sigmoid函数
s = (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))


# 计算ReLU函数
y = np.clip(x, a_min = 0., a_max = None)

#########################################################
# 以下部分为画图程序

# 设置两个子图窗口,将Sigmoid的函数图像画在上边
f = plt.subplot(2,1,1)
# 画出函数曲线
plt.plot(x, s, color='r')
# 添加文字说明
plt.text(-5., 0.9, r'$y=sigmoid(x)$', fontsize=13)
# 设置坐标轴格式
currentAxis=plt.gca()
currentAxis.xaxis.set_label_text('x', fontsize=15)
currentAxis.yaxis.set_label_text('y', fontsize=15)

# 将ReLU的函数图像画在下边
f = plt.subplot(2,1,2)
# 画出函数曲线
plt.plot(x, y, color='g')
# 添加文字说明
plt.text(-3.0, 9, r'$y=ReLU(x)$', fontsize=13)
# 设置坐标轴格式
currentAxis=plt.gca()
currentAxis.xaxis.set_label_text('x', fontsize=15)
currentAxis.yaxis.set_label_text('y', fontsize=15)

plt.show()

【运行结果】

普通图


from matplotlib import pyplot as plt
import numpy as np
n = 256  #n可以理解为曲线的平滑程度
X = np.linspace(-np.pi,np.pi,n,endpoint=True)
Y = np.sin(2*X)

plt.plot(X,Y+1,color='red',alpha=1.00)
plt.plot(X,Y-1,color='blue',alpha=1.00)
plt.show()

【运行结果】

条形图


from matplotlib import pyplot as plt
#数据组1
x =  [5,8,11]  #横坐标
y =  [12,16,6] #对应值
#数据组2
x2 =  [6,9,12] #横坐标
y2 =  [6,15,7] #对应值
plt.bar(x, y, color = 'r', align =  'center')
plt.bar(x2, y2, color =  'g', align =  'center')
plt.title('Bar graph')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()

【运行结果】

散点图


from matplotlib import pyplot as plt
import numpy as np

n = 1024
X = np.random.normal(0,30,n)
Y = np.random.normal(0,30,n)

plt.title('scale:30')
plt.scatter(X,Y,color='red')
plt.show()

【运行结果】以下分别是方差分别为5,10,15,20,25,30的散点图

等高线图


from matplotlib import pyplot as plt
import numpy as np

def f(x,y):return(1-x/2+x**5+y**3)*np.exp(-x**2-y**2) #等高线模型

n = 256  #n可以理解为曲线的平滑程度
x = np.linspace(-3,3,n)
y = np.linspace(-3,3,n)
X,Y = np.meshgrid(x,y)

plt.contourf(X,Y,f(X,Y),8,alpha=.75,cmap='jet')
C = plt.contour(X,Y,f(X,Y),8,color='black',linewidth=.5)
plt.show()

【运行结果】

灰度图


from matplotlib import pyplot as plt
import numpy as np

def f(x,y):return(1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

n = 10
x = np.linspace(-3,3,4*n)
y = np.linspace(-3,3,4*n)
X,Y = np.meshgrid(x,y)

plt.imshow(f(X,Y))
plt.show()

【运行结果】

饼状图


from matplotlib import pyplot as plt
import numpy as np

n = 20  #n决定了有多少个分区,该代码显示有20个分区
Z = np.random.uniform(0,1,n)
plt.pie(Z)
plt.show()

【运行结果】

量场图


from matplotlib import pyplot as plt
import numpy as np

n = 8
X,Y = np.mgrid[0:n,0:n]
plt.quiver(X,Y,color="red")
plt.show()

【运行结果】

极轴图


from matplotlib import pyplot as plt
import numpy as np

plt.figure(figsize=(4,4))
ax1 = plt.subplot(111,projection='polar')
ax1.set_title('spot fish')
ax1.set_rlim(0,12)

data = np.random.randint(1,10,10)
theta = np.arange(0,2*np.pi,2*np.pi/10)

bar = ax1.bar(theta,data,alpha=0.5)
for r,bar in zip(data,bar):
    bar.set_facecolor(plt.cm.jet(r/10.))
plt.show()

【运行结果】

3D图

到此这篇关于使用 NumPy 和 Matplotlib 绘制函数图的文章就介绍到这了,更多相关NumPy 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 算法库。