程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

ValueError: Argument Z must be 2-dimensional

发布于2023-02-05 16:19     阅读(513)     评论(0)     点赞(3)     收藏(5)


I want to plot the number of spherical wavefronts I input using Python, this is my code.I'm using Axes3D to plot, but I have a problem, when I plot with "ax.plot_surface(x, y, z, facecolors=plt.cm.coolwarm(w), shade=False)" doesn´t work and appears me the next message:

ValueError: Argument Z must be 2-dimensional.

My code is the following:

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

def spherical_wavefront(n):
    x, y, z = np.meshgrid(np.linspace(-1, 1, n), np.linspace(-1, 1, n), np.linspace(-1, 1, n))
    r = np.sqrt(x**2 + y**2 + z**2)
    wavefront = np.empty((n, n, n))
    wavefront[r <= 1] = 1/r[r <= 1] * np.exp(1j * r[r <= 1])
    return x, y, z, np.real(wavefront)

num_wavefronts = int(input("How many spherical wavefronts would you like to plot? "))

fig = plt.figure()

for i in range(num_wavefronts):
    x, y, z, w = spherical_wavefront(100)
    ax = fig.add_subplot(111, projection='3d')
    ax.plot_surface(x, y, z, facecolors=plt.cm.coolwarm(w), shade=False)
    ax.set_title(f'Spherical Wavefront {i + 1}')
    ax.set_xlabel('X')
    ax.set_ylabel('Y')
    ax.set_zlabel('Z')

plt.show()

解决方案


暂无回答



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1895750/b6dcb020bbd85eabb8c7/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)