python - 使用 plot_trisurf 绘制三个列表但得到 IndexError
问题描述
我想从四个列表中绘制两个曲面图,它们都是相互独立的。
我试过这个:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
import mpl_toolkits.mplot3d as Axes3D
X = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
Y = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Z1 = [0.735, 0.735, 0.735, 0.735, 0.735, 0.735, 0.735, 0.735, 0.735, 0.735] # the elements here happens to be the same, but could be different
Z2 = [0.8623, 0.9461, 0.9341, 0.976, 0.982, 0.976, 0.976, 0.976, 0.976, 0.976]
X = np.array(X)
Y = np.array(Y)
Z1 = np.array(Z1)
Z2 = np.array(Z2)
X, Y = np.meshgrid(X,Y)
fig = plt.figure(figsize=(8,8))
ax1 = fig.add_subplot(121,projection='3d')
surf1 = ax1.plot_trisurf(X.flatten(),Y.flatten(),Z1.flatten(),cmap = cm.jet, antialiased=True)
ax2 = fig.add_subplot(122,projection='3d')
surf2 = ax2.plot_trisurf(X.flatten(),Y.flatten(),Z2.flatten(),cmap = cm.jet, antialiased=True)
但是,会弹出一个 IndexError 说“索引 40 超出轴 0 的范围,大小为 10”。
鉴于所有列表的长度均为 10,我认为“索引 40”可能是由于meshgrid
,但是当我删除该行时,“qhull Delauney 三角测量计算”中还有另一个错误。
根据我的搜索,似乎大多数 3d 图都是基于函数的,即 z=f(x,y)。我不确定这里的错误是否是因为在我的情况下不存在这种关系。
先感谢您。
解决方案
推荐阅读
- node.js - 对 Octokit 库的嘲讽
- c++ - 带有映射迭代器的循环退出条件
- swift - 'Link' is only available in macOS 11.0 or newer
- web-scraping - 从 Google 表格中的 Bestbuy 网站中提取照片 url
- c# - 有没有办法将此 Twilio CURL 转换为 RestClient?
- javascript - 由于字体链接,滚动到底部不起作用
- oracle-apex - 如何为带有页眉、页脚和经典报告的空白页面创建模板?
- android - Tasker 锁定任务不起作用
- java - 缓存枚举值
- python - python - 如何在Python中使用monkeypatch模拟不属于任何类的函数?