结合散点图和表面图

结合散点图和表面图,第1张

结合散点图和表面

要在同一张图中组合各种类型的图,您应该使用函数

plt.hold(True)。

以下代码绘制了带有3D表面图的3D散点图:

from mpl_toolkits.mplot3d import *import matplotlib.pyplot as pltimport numpy as npfrom random import random, seedfrom matplotlib import cmfig = plt.figure()ax = fig.gca(projection='3d')    # to work in 3dplt.hold(True)x_surf=np.arange(0, 1, 0.01)     # generate a meshy_surf=np.arange(0, 1, 0.01)x_surf, y_surf = np.meshgrid(x_surf, y_surf)z_surf = np.sqrt(x_surf+y_surf)  # ex. function, which depends on x and yax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot);    # plot a 3d surface plotn = 100seed(0)    # seed let us to have a reproducible set of random numbersx=[random() for i in range(n)]   # generate n random pointsy=[random() for i in range(n)]z=[random() for i in range(n)]ax.scatter(x, y, z);  # plot a 3d scatter plotax.set_xlabel('x label')ax.set_ylabel('y label')ax.set_zlabel('z label')plt.show()

结果:

您可以在此处看到其他一些带有3d图的示例:http
//matplotlib.org/mpl_toolkits/mplot3d/tutorial.html

为了将两个图的颜色区分开,我将表面图的颜色从默认值更改为“热”色图- 现在,可以看出表面图覆盖了散点图,而与顺序无关

编辑: 要解决该问题,应在表面图的颜色图中使用透明度;在以下位置添加代码:透明的颜色图 并更改线

ax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot);    # plot a 3d surface plot

ax.plot_surface(x_surf, y_surf, z_surf, cmap=theCM);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5647646.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存