【发布时间】:2013-10-15 11:21:07
【问题描述】:
为了从以下数据生成 3D 表面,我应该在 here 和 here 的任何示例中更改/添加什么?
[100, 0, 'TF', 0]
[100, 0, 'DF', 0]
[100, 50, 'TF', 0]
[100, 50, 'DF', 0]
[100, 100, 'TF', 0]
[100, 100, 'DF', 0]
[100, 150, 'TF', 0.84496124031007758]
[100, 150, 'DF', 0.87209302325581395]
[100, 200, 'TF', 0.88139534883720927]
[100, 200, 'DF', 0.86201550387596892]
[100, 250, 'TF', 0.87441860465116272]
[100, 250, 'DF', 0.889922480620155]
[100, 300, 'TF', 0.87984496124031009]
[100, 300, 'DF', 0.89922480620155043]
[100, 350, 'TF', 0.92015503875968996]
[100, 350, 'DF', 0.90697674418604657]
注意:我确实根据上面提到的代码尝试了一些事情,但到目前为止我还没有设法让它工作。我没有在这里引用我的代码的原因是因为我会让我的问题变得比实际更复杂。
【问题讨论】:
-
我将第一个示例中的相关行细化为
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.YlGnBu_r)。您需要从列表中提取 x、y 和 z 数据,并将该数据用作该函数的 X、Y 和 Z 参数。很确定这些可以是列表以及 numpy 数组。 -
plot_surface()要求您的 X、Y 和 Z 数据在二维数组中定期网格化,例如您从np.meshgrid()获得的数据。您的数据是如何构造的并不完全清楚('TF'和'DF'是什么?),但看起来它不是定期网格化的。您可以尝试plot_trisurf(),它将接受一维数组形式的不规则 X、Y、Z 数据 - see my answer here。 -
显然,第 3 列应该被删除(我不会进一步讨论)。我已经尝试过你提到的东西,但正如我所说,总是缺少一些东西。能否请您提供执行此操作的代码?
-
您需要发布您的代码和您遇到的错误。没有多少人会有耐心去盲目地猜测你做错了什么。
标签: python matplotlib plot 3d geometry-surface