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

如何用Matplotlib绘制依赖于中心距离的圆形2D图(基于1D函数)

嘿,我懂你要做的这种径向对称的2D可视化——所有到中心距离相同的点共享同一个函数值对吧?其实Matplotlib完全能搞定,我给你两种实用的方案,都是从一维函数生成这类图的:

方法1:生成网格计算径向距离,用imshow/pcolormesh绘制

核心思路是先创建x-y平面的网格,计算每个网格点到中心的距离r,再把你的一维函数应用到所有r上得到对应的值,最后用2D色彩图展示:

import numpy as np
import matplotlib.pyplot as plt

# 替换成你自己的一维径向函数,这里用高斯函数做示例
def my_radial_function(r):
    return np.exp(-r**2 / 10) + np.sin(r)/r  # 随便写的示例函数,你可以改成自己的

# 设置网格范围和精度
x_range = np.linspace(-15, 15, 100)  # x轴从-15到15,分100个点
y_range = np.linspace(-15, 15, 100)
X, Y = np.meshgrid(x_range, y_range)  # 生成x-y网格坐标

# 计算每个点到图像中心的距离
r = np.sqrt(X**2 + Y**2)

# 把一维函数应用到所有r上,得到2D的函数值矩阵
Z = my_radial_function(r)

# 绘制图像
plt.figure(figsize=(7,7))
# imshow适合快速展示,extent参数对应x-y的实际范围,origin='lower'让坐标符合常规认知
plt.imshow(Z, extent=[-15,15,-15,15], origin='lower', cmap='plasma')
plt.colorbar(label='函数值')
plt.title('径向对称2D色彩图')
plt.xlabel('X 坐标')
plt.ylabel('Y 坐标')
plt.show()
方法2:用contourf绘制等值线填充图

如果想更清晰地展示不同距离r对应的函数值区域,等值线填充图会更直观,步骤和上面类似:

plt.figure(figsize=(7,7))
# contourf会自动根据Z的值生成等值线,levels参数控制等值线的数量
contour_plot = plt.contourf(X, Y, Z, levels=25, cmap='plasma')
plt.colorbar(contour_plot, label='函数值')
plt.title('径向对称等值线填充图')
plt.xlabel('X 坐标')
plt.ylabel('Y 坐标')
plt.axis('equal')  # 强制x和y轴比例一致,避免圆形被拉成椭圆
plt.show()

额外提示:

  • 如果你之前试Axes3D其实也能实现(比如画3D曲面图),但你要的是2D图的话,上面两种方法更贴合需求
  • 如果你的函数在r=0处有奇点(比如1/r),可以单独处理r=0的点:Z[r < 1e-6] = 0(或者你需要的特殊值)
  • 调整linspace的点数可以控制图像精度,点数越多图像越细腻,但计算也会慢一点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:40:40