python - 使用python绘制3D表面时如何修复“参数Z必须是二维的”
问题描述
我想根据我在代码中创建的简单数据绘制 3D 表面。但是,它不断弹出参数 Z 必须是二维的错误。我该如何解决?
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax =Axes3D(fig)
x=np.arange(-4,4,0.25)
y=np.arange(-4,4,0.25)
X,Y=np.meshgrid(x,y)
Z=np.sin(np.sqrt(x**2+y**2))
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='rainbow')
plot.show()
解决方案
您的问题是您基于一维 x 和 y 定义 Z。您需要使用由meshgrid
.
示例解决方案
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(nrows=1, ncols=1, num=0, figsize=(16, 8),
subplot_kw={'projection': '3d'})
gridY, gridX = np.mgrid[-4:4:33 * 1j, -4:4:33 * 1j]
Z = np.sin(np.sqrt(gridX ** 2 + gridY ** 2))
pSurf = ax.plot_surface(gridX, gridY, Z, rstride=1, cstride=1, cmap='rainbow')
fig.colorbar(pSurf)
plt.show()
显示
推荐阅读
- angular - 将 Angular 数据表转换为 xlsx 文件
- jquery - 如何在特定背景图片 url 上传之前预览多张图片
- python-2.7 - 下载日志 - 修改并使用最后一行
- javascript - 如何使用 .each() 在 jQuery 中创建嵌套数组?
- h2o - libxgboost4j_gpu.so for x86 architecture inside h2o.jar for ppc64le
- sql-server - 使用 JOIN 对 PATINDEX 进行性能调整
- angular - Angular 7 pwa/ SwPush - 推送通知不起作用
- ruby-on-rails - 由于 http 在 Rails 中的 Geocorder Gem 问题
- node.js - 在 Angular 项目中在 www.mysite.com/blog 上安装 WordPress
- performance - Jmeter并发线程组,测试计划未在并发线程组图中执行