当前位置: 首页 > article >正文

Matplotlib---3D图

1. 3D图

# 3D引擎
from mpl_toolkits.mplot3d.axes3d import Axes3D 
fig = plt.figure(figsize=(8, 5))  

x = np.linspace(0, 100, 400)
y = np.sin(x)
z = np.cos(x)

# 三维折线图
axes = Axes3D(fig, auto_add_to_figure=False) 
fig.add_axes(axes)
axes.plot(x,y,z) 
plt.savefig('images/6-1.png')

 np.linspace()函数是NumPy库中的一个函数,用于生成等间隔的数值序列。

使用格式:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数说明:

- start:序列的起始值。

- stop:序列的结束值。

- num:要生成的等间隔样本数量,默认为50。

- endpoint:布尔值,控制是否包含stop值,默认为True,即包含。

- retstep:布尔值,控制是否返回样本之间的步长值,默认为False,即不返回。

- dtype:返回数组的数据类型,默认为None,即与输入参数的数据类型一致。

`axes = Axes3D(fig, auto_add_to_figure=False)`是一种创建`Axes3D`对象的方式,其中`fig`是

一个已经创建好的`Figure`对象。

参数说明:

- `fig`: 一个已经创建好的`Figure`对象,用于在该图形上创建`Axes3D`对象。

- `auto_add_to_figure`: 可选参数,默认为`True`。当设置为`True`时,创建的`Axes3D`对象会自动

添加到`fig`中。当设置为`False`时,需要手动将该对象添加到`fig`中。

使用这种方式创建`Axes3D`对象可以灵活地控制对象的添加和布局。如果`auto_add_to_figure`参

数设为`True`,那么创建对象后它将自动添加到`fig`中,而不需要额外的步骤。如果设为`False`,

则需要手动将对象添加到`fig`中。

例如:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 创建一个空的Figure对象
fig = plt.figure()

# 不自动将创建的Axes3D对象添加到Figure中
axes = Axes3D(fig, auto_add_to_figure=False)

# 将创建的Axes3D对象手动添加到Figure中
fig.add_axes(axes)

在这个例子中,通过将`auto_add_to_figure`参数设置为`False`来创建了一个空的`Axes3D`对

象`axes`,然后通过`fig.add_axes()`方法手动将其添加到`fig`中。这样就可以更灵活地控制

`Axes3D`对象的创建和添加。

在Matplotlib库中,`Axes3D`函数用于创建一个三维坐标系。

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

- `fig = plt.figure()`:创建一个新的图像窗口。

- `ax = fig.add_subplot(111, projection='3d')`:在图像窗口中添加一个子图,并将其设置为三维坐

标系。

参数说明:

- `projection='3d'`:指定子图的投影方式为三维('3d')。这个参数告诉Matplotlib将图像显示为三维

形式。

一旦你创建了一个`Axes3D`对象,你就可以使用它的方法和属性来绘制和自定义三维图形。

常用的方法和属性包括(但不限于):

- `scatter(x, y, z, ...)`: 绘制三维散点图。
    - `x`、`y`、`z`:表示数据点的x、y、z坐标值。
    - `...`:其他用于自定义样式的参数,例如点的大小、颜色等。

- `plot(x, y, z, ...)`: 绘制三维线图。
    - `x`、`y`、`z`:表示数据点的x、y、z坐标值。
    - `...`:其他用于自定义样式的参数,例如线的类型、颜色等。

- `plot_surface(X, Y, Z, ...)`: 绘制三维曲面图。
    - `X`、`Y`、`Z`:表示网格点的x、y、z坐标值。
    - `...`:其他用于自定义样式的参数,例如曲面的颜色、透明度等。

- `set_xlabel(label)`, `set_ylabel(label)`, `set_zlabel(label)`: 设置x、y、z坐标轴的标签。
    - `label`:坐标轴的标签文本。

- `set_title(title)`: 设置子图的标题。
    - `title`:子图的标题文本。

- `set_xlim(left, right)`, `set_ylim(bottom, top)`, `set_zlim(bottom, top)`: 设置x、y、z坐标轴的取值范围(最小值和最大值)。
    - `left`, `right`, `bottom`, `top`:坐标轴的取值范围。

- `view_init(elev, azim)`: 设置观察视角的高度角和方位角。
    - `elev`:观察视角的高度角(垂直旋转角度),单位为度。
    - `azim`:观察视角的方位角(水平旋转角度),单位为度。

fig = plt.figure(figsize=(8, 5))  

# 三维折线图
axes = Axes3D(fig, auto_add_to_figure=False) 
fig.add_axes(axes)

# 三维散点图
x = np.random.rand(50)  
y = np.random.rand(50)  
z = np.random.rand(50) 
axes.scatter(x, y, z,
                    color='red',
                    s=100)
plt.savefig('images/6-2.png')

fig = plt.figure(figsize=(8, 5))

# 二维变成了三维
axes = Axes3D(fig, auto_add_to_figure=False) 
fig.add_axes(axes)

x = np.arange(1, 5)

for m in x:
    axes.bar(
            np.arange(4),
            np.random.randint(10, 100, size=4),
            zs=m,  # 在x轴中的第几个
            zdir='x',  # 在哪个方向上排列
            alpha=0.7,  # 透明度
            width=0.5  # 宽度
    )
    
axes.set_xlabel('X轴', fontsize=18, color='red')
axes.set_ylabel('Y轴', fontsize=18, color='blue')
axes.set_zlabel('Z轴', fontsize=18, color='green')
plt.savefig('images/6-3.png')
plt.show()

 


http://www.kler.cn/a/37778.html

相关文章:

  • Docker安装Rabbitmq超详细教程
  • AI 对抗超级细菌:麦克马斯特大学利用深度学习发现新型抗生素 abaucin
  • 复习第七课 C语言-指针数组,函数,string
  • Kubernetes 集群管理和编排
  • Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】
  • ELK之logstash四大组件
  • 第二周周报
  • Redis+IDEA极速了解和实现单机锁和分布式锁
  • 机器学习与深度学习——自定义函数进行线性回归模型
  • Android Glide预加载preload ,kotlin
  • 低代码在边缘计算工业软件中的应用
  • windows下mingw 编译boost-1.78.0
  • 【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )
  • 激斗云计算:互联网大厂打响新一轮排位战
  • mysql,对表的简单操作
  • Python模块—PyMySQL模块
  • Vue和React的区别?
  • Java设计模式之行为型-责任链模式(UML类图+案例分析)
  • 可靠的手机问题修复工具分享 - 修复各种 Android 系统问题
  • el-checkbox和el-switch绑定一个Number值