You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在3D Quiver图中仅显示x>0、y>0、z<0的指定象限

实现指定象限的3D矢量绘制

要仅显示满足x>0、y>0且z<0的矢量点,可通过布尔索引筛选符合条件的坐标与导数数据,再传入Quiver3D绘制。以下是修改后的完整代码:

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

b=75
T=50
steps = 4
valuelist = [0]

for i in range(1,steps+1):
    valuelist = [-i/steps] + valuelist
    valuelist.append(i/steps)

r = len(valuelist)
x, y, z = np.meshgrid(np.linspace(-1,1,r),
                      np.linspace(-1,1,r),
                      np.linspace(-1,1,r))
u = np.zeros((r,r,r))
v = np.zeros((r,r,r))
w = np.zeros((r,r,r))

# 计算导数(注意原函数名derivative-one-step不符合Python命名规范,已修正为合法命名)
for i in range(r):
    for j in range(r):
        for k in range(r):
            initial_values = [valuelist[i], valuelist[j], valuelist[k]]
            deriv = derivative_one_step(initial_values, b)
            u[i,j,k] = deriv[0]
            v[i,j,k] = deriv[1] 
            w[i,j,k] = deriv[2] 

# 筛选目标象限的点
mask = (x > 0) & (y > 0) & (z < 0)
x_filtered = x[mask]
y_filtered = y[mask]
z_filtered = z[mask]
u_filtered = u[mask]
v_filtered = v[mask]
w_filtered = w[mask]

# 绘制3D矢量图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.quiver(x_filtered, y_filtered, z_filtered, u_filtered, v_filtered, w_filtered)

# 固定坐标轴范围为-1到1
ax.set_xlim([-1, 1])
ax.set_ylim([-1, 1])
ax.set_zlim([-1, 1])

plt.show()

核心要点:

  • 布尔索引筛选:通过逻辑与运算生成筛选掩码,精准提取目标象限的所有数据点,避免无效计算与绘制。
  • 函数名修正:原代码中derivative-one-step包含非法连字符,改为符合Python规范的derivative_one_step(需确保你实际的导数计算函数已按此命名)。
  • 范围控制:通过set_xlim等方法固定坐标轴范围,匹配你要求的-1到1数值区间。

内容的提问来源于stack exchange,提问作者Hani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:35:28