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

如何在Julia中实现球面(含局部区域)的函数值可视化

用Plots.jl绘制带函数值颜色映射的球面(支持局部区域)

核心实现思路

  • 生成球坐标网格点,根据需求筛选函数作用的局部区域(象限/路径)
  • 计算每个有效点的f(θ,φ)值,作为颜色映射的依据
  • 借助Plots的3D绘图函数,将颜色与函数值绑定,搭配颜色条展示取值范围

完整可运行代码示例

using Plots
gr() # 选用GR后端,适配VSCode Jupyter的交互需求

# 球坐标转笛卡尔坐标工具函数
function spherical_to_cartesian(θ, φ, r=1.0)
    x = r * sin(θ) * cos(φ)
    y = r * sin(θ) * sin(φ)
    z = r * cos(θ)
    return x, y, z
end

# 替换成你自己的f(θ,φ)函数即可
function f(θ, φ)
    # 示例:仅在第一象限(θ∈[0,π/2], φ∈[0,π/2])计算值,其余区域设为NaN(不渲染)
    if 0 ≤ θ ≤ π/2 && 0 ≤ φ ≤ π/2
        return sin(θ) * cos(φ) # 取值范围0-1的示例函数
    else
        return NaN
    end
end

# 生成球坐标网格
θ = range(0, π, length=100)
φ = range(0, 2π, length=100)
θ_grid, φ_grid = meshgrid(θ, φ)

# 转换为笛卡尔坐标
x, y, z = spherical_to_cartesian.(θ_grid, φ_grid)

# 计算函数值网格
f_vals = f.(θ_grid, φ_grid)

# 绘制带颜色映射的球面
plt = surface(
    x, y, z,
    color=f_vals,
    colorbar=true,
    colorbar_title="f(θ,φ)",
    cmap=:viridis, # 可选颜色映射,比如:plasma、:coolwarm
    alpha=0.8, # 透明度优化局部区域可见性
    title="球面上的函数值颜色映射",
    xlabel="X", ylabel="Y", zlabel="Z"
)

display(plt)

局部区域适配技巧

  • 象限筛选:在f(θ,φ)中通过条件判断,将不需要的区域返回NaN,Plots会自动跳过这些点的渲染
  • 路径绘制:针对特定路径(如固定θ的环形路径),生成一维坐标数组后用plot3d!叠加:
# 示例:绘制θ=π/4,φ∈[0,π]的路径
θ_path = fill(π/4, 100)
φ_path = range(0, π, length=100)
x_path, y_path, z_path = spherical_to_cartesian.(θ_path, φ_path)
f_path = f.(θ_path, φ_path)

plot3d!(x_path, y_path, z_path, color=f_path, linewidth=5, cmap=:viridis, colorbar=true)

VSCode Jupyter交互优化

  • 固定使用GR后端(gr()),这是VSCode环境中交互稳定性最好的后端,支持旋转、缩放操作
  • 若出现显示异常,可在代码开头添加ENV["GKSwstype"]="100"规避环境适配问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:05:06