python中绘制2D曲线图需要使用到
Matplotlib
,Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
1. 绘制折线图
plt.plot() 可以用于绘制折线图。只传入一维的散点(n个)p1时,横坐标对应散点的次序,从0到n-1,纵坐标对应散点的值。示例:
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
p1=[0,1.1,1.8,3.1,4.0] # 数据点
#创建绘图图表对象,可以不显式创建,跟cv2中的cv2.namedWindow()用法差不多
plt.figure('Draw')
plt.plot(p1) # plot绘制折线图
plt.draw() # 显示绘图
plt.pause(5) #显示5秒
plt.savefig("easyplot01.jpg") #保存图象
plt.close() #关闭图表
plt.plot() 传入二维的散点p1,p2(p1和p2的长度要一样)时,横坐标x绘制p1,纵坐标y绘制p2,示例:
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
p1=[0,1.1,1.8,3.1,4.0] # 数据点
p2=[2,2.4,4.3,3.5,2.5]
#创建绘图图表对象,可以不显式创建,跟cv2中的cv2.namedWindow()用法差不多
plt.figure('Draw')
plt.plot(p1,p2) # plot绘制折线图
plt.draw() # 显示绘图
plt.pause(5) #显示5秒
plt.savefig("easyplot01.jpg") #保存图象
plt.close() #关闭图表
2. 绘制散点图
plt.scatter()用于绘制散点图,传入参数必须是二维的:plt.scatter(p1,p2),示例:
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
p1=[0,1.1,1.8,3.1,4.0] # 数据点
p2=[2,2.4,4.3,3.5,2.5]
#创建绘图图表对象,可以不显式创建,跟cv2中的cv2.namedWindow()用法差不多
plt.figure('Draw')
plt.scatter(p1,p2) # scatter绘制散点图
plt.draw() # 显示绘图
plt.pause(10) #显示10秒
plt.savefig("easyplot.jpg") #保存图象
plt.close() #关闭图表
plt.plot() 也可以用于绘制散点图,plt.plot(p1,p2,'ro')表示散点的颜色是红色,形状是o,示例:
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
p1=[0,1.1,1.8,3.1,4.0] # 数据点
p2=[2,2.4,4.3,3.5,2.5]
#创建绘图图表对象,可以不显式创建,跟cv2中的cv2.namedWindow()用法差不多
plt.figure('Draw')
plt.plot(p1,p2,'ro')
plt.draw() # 显示绘图
plt.pause(10) #显示10秒
plt.savefig("easyplot.jpg") #保存图象
plt.close() #关闭图表
3. 添加坐标轴说明、添加标题、图片中插入文字、显示网格
坐标轴说明:plt.xlabel()、plt.ylabel()
添加标题: plt.title()
插入文字: plt.text(60, .025, r'$number=5, sigma=0$')
显示网格: plt.grid(True)
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
p1=[0,1.1,1.8,3.1,4.0] # 数据点
p2=[2,2.4,4.3,3.5,2.5]
#创建绘图图表对象,可以不显式创建,跟cv2中的cv2.namedWindow()用法差不多
plt.figure('Draw')
plt.plot(p1,p2,'ro')
plt.xlabel('number of samples')
plt.ylabel('value of samples')
plt.title('sample data')
plt.text(1.1, 3.6, r'$number=5, sigma=0$')
plt.grid(True)
plt.draw() # 显示绘图
plt.pause(10) #显示10秒
plt.savefig("easyplot.jpg") #保存图象
plt.close() #关闭图表
4. 绘制3D图曲面图
plot_surface()用于绘制3D曲面图:
# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
X = [0,1.1,1.8,3.1,4.0]
Y = [2,2.4,4.3,3.5,2.5]
X, Y = np.meshgrid(X, Y)
Z = np.array([[2,2.4,4.3,3.5,2.5]])
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
plt.draw()
plt.pause(10)
plt.savefig('3D.jpg')
plt.close()
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = X*Y
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
plt.draw()
plt.pause(10)
plt.savefig('3D.jpg')
plt.close()
5. 绘制3D散点图
scatter()用于绘制3D散点图:
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = [0,1.1,1.8,3.1,4.0]
y = [2,2.4,4.3,3.5,2.5]
z = [1,2,3,4,5]
ax = plt.subplot(projection='3d') # 创建一个三维的绘图工程
ax.scatter(x, y, z, c='r') # 绘制数据点,颜色是红色
ax.set_zlabel('Z') # 坐标轴
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.draw()
plt.pause(10)
plt.savefig('3D.jpg')
plt.close()
figure, ax基础
plt
.***和ax.***的区别
我认为所有不先讲清楚
plt
.和ax. 两种画
图
方式的区别的教程都是耍流氓。一上来就告诉你,
plt
.figure(),
plt
.
plot
(),
plt
.show(),这么画就对了的,都是不负责任的表现!
在mat
plot
lib中,有两种画
图
方式:
plt
.figure():
plt
.***系列。通过http://
plt
.xxx来画
图
,其实是取了一个捷径。这是通过mat
plot
lib提供的一个api,这个
plt
提供了很多基本的function可
1.在绘制
图
形,
图
像过程中,可以借助绘制时间的控制,逐步显示绘制内容,进而达到
图
形,
图
像动态显示的效果
用
plot
()和
scatter
()绘制正弦波和
散点图
,其中
散点图
是动态沿着正弦波绘制.实现代码如下(我的测试环境是IDIE,如果是Jupyter Notebook环境下,效果不是很明显)
import mat
plot
lib.py
plot
as
plt
import numpy as np
fig =
plt
.figure()
ax = fig.add_sub
plot
(111)
x = np
import mat
plot
lib.py
plot
as
plt
# 解决不能显示中文
plt
.rcParams['font.sans-serif'] = ['SimHei']
plt
.rcParams['axes.unicode_minus'] = False
plt
.title("二维
散点图
", fontsize=24)
plt
.xlim(xmax=9,xmin=0)
plt
.ylim(ym...
在
Python
中,可以使用一些库来绘制三维
图
形,其中最常用的是`mat
plot
lib`库的`m
plot
3d
`模块以及专门用于三维
绘图
的`Mayavi`和`PyVista`等。以下是使用`mat
plot
lib`的简单示例:
```
python
import mat
plot
lib.py
plot
as
plt
from mpl_toolkits.m
plot
3d
import Axes
3D
# 创建一个新的
3D
图
像
fig =
plt
.figure()
ax = fig.add_sub
plot
(111, projection='
3d
')
# 示例数据 - 三个坐标轴上的值
x = [1, 2, 3, 4]
y = [5, 6, 7, 8]
z = [9, 8, 7, 6]
# 绘制三维
散点图
ax.
scatter
(x, y, z)
# 添加标题和标签
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt
.show()
`Mayavi`则提供了更高级的功能,如表面、矢量场和动画等,适合科学计算可视化。`PyVista`是一个交互式的数据可视化库,它专为处理大型几何体和大量数据而设计。
如果你需要更具体的帮助或有其他问题,例如如何设置特定类型的
3D
图
形,或者遇到错误,可以提出