Rainyboy 发表于 2011-10-7 22:09

用matplotlib及mplot3d绘的图

本帖最后由 Rainyboy 于 2011-10-7 22:10 编辑

云图和等高线图使用matplotlib的plt.contour(X,Y,Z,...) 和 plt.imshow(Z,...)函数即可,其中X,Y,Z的维数必须一致。




绘制三维图形需要使用mpl_toolkits.mplot3d库,这个库在matplotlib的文档中并未详细说明,在其网站上有文档:
http://matplotlib.sourceforge.net/mpl_toolkits/mplot3d/


按照示例代码,再翻一翻文档,照猫画虎就行了。






比较遗憾的是,似乎只能以这个视角来绘图了,无法旋转视图什么的。

mxlzhenzhu 发表于 2013-6-29 00:58

网格图怎么画?前处理软件中常见的那种样子。

linqus 发表于 2013-7-1 23:36

网格通过x、y坐标计算即可,
matlab中有自动生成命令

筱炜轩 发表于 2013-11-14 08:07

{:{23}:}高手啊,一直在琢磨怎么让三维网格图和投影等高线图同时显示,好帖子!

Rainyboy 发表于 2013-11-14 19:58

linqus 发表于 2013-7-1 16:36 static/image/common/back.gif
网格通过x、y坐标计算即可,
matlab中有自动生成命令

请问元老说的是griddata函数吗?

Rainyboy 发表于 2013-11-15 03:19

筱炜轩 发表于 2013-11-14 01:07 static/image/common/back.gif
高手啊,一直在琢磨怎么让三维网格图和投影等高线图同时显示,好帖子!


from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm

fig = plt.figure()
ax = fig.gca(projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)

ax.set_xlabel('X')
ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
ax.set_zlim(-100, 100)

plt.show()


这是一个官方的例子,可以参考一下。plot_surface()函数用来画三维曲面,ax.contour()函数用来在三维空间中绘制二维等高线。


筱炜轩 发表于 2013-11-15 07:38

Rainyboy 发表于 2013-11-15 03:19 static/image/common/back.gif
这是一个官方的例子,可以参考一下。plot_surface()函数用来画三维曲面,ax.contour()函数用来在 ...

{:{39}:}太感谢了!
页: [1]
查看完整版本: 用matplotlib及mplot3d绘的图