Python:matplotlib和mpl_toolkits.mplot3d的Axes3D.plot的问题

本文介绍了在使用matplotlib的mpl_toolkits.mplot3d.Axes3D.plot绘制3D曲线时遇到的类型错误问题。通过尝试将numpy数组转换为list或使用pandas DataFrame来组织数据,最终成功解决了ValueError并绘制出正确的3D曲线。
部署运行你感兴趣的模型镜像

按照https://bugxch.github.io/matplot-%E4%B9%8B-3D-%E7%BB%98%E5%9B%BE%E6%8C%87%E5%8D%97/

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
 
mpl.rcParams['legend.fontsize'] = 10
 
fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve')
ax.legend()

plt.show()

可是ax.plot填入三个坐标参数的时候,需注意参数的类型。

开始的时候:ax.plot(x, y, z),x,y,z均为'numpy.ndarray'类型,在运行时候总是报错:ValueError: input operand has more dimensions than allowed by the axis remapping,百思不得其解。减少一个参数z,可以运行,但是结果却变成了三维图中的平面图。

那么,ax.plot(x.tolist(), y.tolist(), z.tolist()),把x,y,z全部用tolist()转成list,仍然报之前的错误。

最后,把x,y,z组合成pandas.DataFrame,并且命名对应列名,tmp = pandas.DataFrame(x,columns=['X']),tmp['Y'] = y,tmp['Z'] = z,这时候按照列访问tmp,如ax.plot(tmp['X'], tmp['Y'], tmp['Z']),成果画出三维曲线。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值