python画图工具常用操作

学习目标:

提示:这里可以添加学习目标

例如:

  • matplotlib模块

学习内容:

1.创建画布和坐标轴

1.1创建

(1)plt.figure

import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10, 10))**#画布对象**
ax = fig.add_subplot(111, projection='3d')#创建三维坐标轴对象

(2)plt.subplots:
plt.subplots() 方法的参数可以控制创建的图形的行数和列数,以及可选的共享轴属性。在你的例子中,2 是指创建两行,1 是指创建一列,所以你得到了一个有两个子图的图形。

#plt.subplots() 是 Matplotlib 库中用于创建 Figure 对象和一个或多个 Axes 对象的函数。
fig, ax = plt.subplots(2, 1)

1.2坐标轴设置

#坐标轴范围设置
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_zlim(0,1)
#自定义间距的坐标轴设置
ax.set_xticks(range(0, num_cols + 1, 1))
#这将在 x 轴上设置从 0 到 num_cols 的刻度,间隔为 1。

1.3坐标轴整体设置:

plt.rcParams["font.sans-serif"] = ["SimHei"]        # 设置字体为黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像时负号'-'显示为方块的问题
plt.rcParams['font.size'] = 9  # 设置字号为9pt

2.图示,图注

ax.set_title('6x6x6 Unit Grid with Nodes')#图片加入标题

3.画图

3.1ax.plot() 方法用于在 Matplotlib 中绘制线条或曲线。其基本语法为:

ax.plot(x, y, z, **kwargs)

x、y、z 分别是待绘制线条的 x、y、z 坐标值。这些值可以是列表、数组或者其他可迭代对象。
**kwargs 是一系列可选参数,用于指定线条的样式、颜色、标记等属性。

**kwargs参数:
color: 线条的颜色(如 'blue''#FF0000')。
linestyle: 线条的样式,如实线 '-'、虚线 '--'、点划线 '-.' 等。
linewidth: 线条的宽度。
marker: 点的标记类型,用于标记线条上的数据点,如 'o' 表示圆形标记、'^' 表示三角形标记等。
markersize: 标记的大小。

示例一--------绘制三维网格线

for i in range(num_cols + 1):
    for j in range(num_rows + 1):
        ax.plot([i, i], [j, j], [0, num_layers], color='gray', linestyle='--', linewidth=0.5)
    for k in range(num_layers + 1):
        ax.plot([i, i], [0, num_rows], [k, k], color='gray', linestyle='--', linewidth=0.5)
for j in range(num_rows + 1):
    for k in range(num_layers + 1):
        ax.plot([0, num_cols], [j, j], [k, k], color='gray', linestyle='--', linewidth=0.5)

在这里插入图片描述

3.2ax.scatter() 方法用于在 Matplotlib 中绘制散点图,即在图形上绘制一系列离散的点。其基本语法为:

ax.scatter(x, y, z=None, **kwargs)

x、y、z 分别是点的 x、y、z 坐标值。这些值可以是列表、数组或者其他可迭代对象。当绘制二维散点图时,只需要提供 x 和 y 坐标值;当绘制三维散点图时,还需要提供 z 坐标值。
**kwargs 是一系列可选参数,用于指定散点的样式、颜色、大小等属性。

**kwargs参数:
color: 散点的颜色(如 'blue''#FF0000')。
marker: 散点的标记类型,如 'o' 表示圆形、'^' 表示三角形等。
s: 散点的大小,用于控制点的直径或面积。
ax.scatter() 方法可以用于绘制二维散点图或三维散点图,具体取决于提供的坐标值。

示例二--------三维散点图

for node_pos in node_positions:
    ax.scatter(node_pos[0], node_pos[1], node_pos[2], marker='o', s=50, color='blue')
# 绘制源点
ax.scatter(source_node[0], source_node[1], source_node[2], marker='*', s=100, color='red')
# 绘制直线连接源点与其相邻的节点
for node_pos in node_positions:
    if node_pos != source_node:
        if abs(node_pos[0] - source_node[0]) <= 1 and abs(node_pos[1] - source_node[1]) <= 1 and abs(node_pos[2] - source_node[2]) <= 1:
            if node_pos not in [(source_node[0], source_node[1], source_node[2])]:
                ax.plot([source_node[0], node_pos[0]], [source_node[1], node_pos[1]], [source_node[2], node_pos[2]], color='black')
#绘制点对点线条时
#x=[source_node[0], node_pos[0]],
#y=[source_node[1], node_pos[1]],
#z=[source_node[2], node_pos[2]],

在这里插入图片描述
示例三----------条例图示

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
scatter = ax.scatter(x, y, z, c=model.flatten(), cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Depth')
# 添加速度条图例
cbar = fig.colorbar(scatter, ax=ax, orientation='vertical')
cbar.set_label('Velocity')
plt.title('3D Layered Velocity Model')
plt.show()

在这里插入图片描述

3.3文本注释

ax.text() 方法用于在 Matplotlib 图形中添加文本注释。其基本语法为:

ax.text(x, y, z, s, **kwargs)

x、y、z 是文本注释的位置,分别表示文本注释的 x、y、z 坐标值。当绘制二维图形时,只需要提供 x 和 y 坐标值;当绘制三维图形时,需要同时提供 x、y 和 z 坐标值。
s 是要添加的文本内容,可以是字符串。
**kwargs 是一系列可选参数,用于指定文本的样式、颜色、字体大小等属性。

 **kwargs
fontsize: 文本的字体大小。
color: 文本的颜色。

实例四--------在点上加值

在这里插入图片描述

3.4 网格线

1)plt.axhline(y=i, color='gray', linestyle='--', linewidth=0.5) 
是 Matplotlib 中用于在图形中添加水平线的方法。这个方法会在指定的 y 坐标处添加一条水平线。
(2)plt.grid(True) 是 Matplotlib 中用于在图形中添加网格线的方法。
(3)plt.gca().set_aspect('equal', adjustable='box') 
是 Matplotlib 中用于设置坐标轴纵横比的方法。
plt.gca() 获取当前 Axes 对象,即获取当前图形中的坐标轴对象。
set_aspect('equal', adjustable='box') 将坐标轴的纵横比设置为相等,同时通过 adjustable='box' 参数告诉 Matplotlib 在调整图形大小时保持纵横比不变。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值