文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python 绘制3D图

2023-09-25 15:30

关注

python 绘制3D图

1.散点图

代码

# This import registers the 3D projection, but is otherwise unused.from mpl_toolkits.mplot3d import Axes3D  # noqa: F401 unused importimport matplotlib.pyplot as pltimport numpy as np# Fixing random state for reproducibilitynp.random.seed(19680801)def randrange(n, vmin, vmax):    '''    Helper function to make an array of random numbers having shape (n, )    with each number distributed Uniform(vmin, vmax).    '''    return (vmax - vmin)*np.random.rand(n) + vminfig = plt.figure()ax = fig.add_subplot(111, projection='3d')n = 100# For each set of style and range settings, plot n random points in the box# defined by x in [23, 32], y in [0, 100], z in [zlow, zhigh].for m, zlow, zhigh in [('o', -50, -25), ('^', -30, -5)]:    xs = randrange(n, 23, 32)    ys = randrange(n, 0, 100)    zs = randrange(n, zlow, zhigh)    ax.scatter(xs, ys, zs, marker=m)ax.set_xlabel('X Label')ax.set_ylabel('Y Label')ax.set_zlabel('Z Label')plt.show()

输出:
在这里插入图片描述

输入的数据格式

这个输入的三个维度要求是三列长度一致的数据,可以理解为3个length相等的list。
用上面的scatter或者下面这段直接plot也可以。

fig = plt.figure()ax = fig.gca(projection='3d')ax.plot(h, z, t, '.', alpha=0.5)plt.show()

输出:
在这里插入图片描述

2.三维表面 surface

代码

x = [12.7, 12.8, 12.9]y = [1, 2, 3, 4]temp = pd.DataFrame([[7,7,9,9],[2,3,4,5],[1,6,8,7]]).TX,Y = np.meshgrid(x,y)  # 形成网格化的数据temp = np.array(temp)fig = plt.figure(figsize=(16, 16))ax = fig.gca(projection='3d')ax.plot_surface(Y,X,temp,rcount=1, cmap=cm.plasma, linewidth=1, antialiased=False,alpha=0.5) #cm.plasmaax.set_xlabel('zone', color='b', fontsize=20)ax.set_ylabel('h2o', color='g', fontsize=20)ax.set_zlabel('Temperature', color='r', fontsize=20)

output:
在这里插入图片描述

输入的数据格式

这里x和y原本都是一维list,通过np.meshgrid可以将其形成4X3的二维数据,如下图所示:
在这里插入图片描述
在这里插入图片描述
而第三维,得是4X3的2维的数据,才能进行画图

scatter + surface图形展示

在这里插入图片描述

3. 三维瀑布图waterfall

代码

from matplotlib.collections import PolyCollectionimport matplotlib.pyplot as pltfrom matplotlib import colors as mcolorsimport numpy as npaxes=plt.axes(projection="3d")def colors(arg):    return mcolors.to_rgba(arg, alpha=0.6)verts = []z1 = [1, 2, 3, 4]x1 = np.arange(0, 10, 0.4)for z in z1:    y1 = np.random.rand(len(x1))    y1[0], y1[-1] = 0, 0    verts.append(list(zip(x1, y1)))# print(verts)poly = PolyCollection(verts, facecolors=[colors('r'), colors('g'), colors('b'),             colors('y')])poly.set_alpha(0.7)axes.add_collection3d(poly, zs=z1, zdir='y')axes.set_xlabel('X')axes.set_xlim3d(0, 10)axes.set_ylabel('Y')axes.set_ylim3d(-1, 4)axes.set_zlabel('Z')axes.set_zlim3d(0, 1)axes.set_title("3D Waterfall plot")plt.show()

输出:
在这里插入图片描述

输入的数据格式

这个的输入我还没有完全搞懂,导致我自己暂时不能复现到其他数据,等以后懂了再回来补充。

4. 3d wireframe

code

from mpl_toolkits.mplot3d import axes3dimport matplotlib.pyplot as pltfig, (ax1, ax2) = plt.subplots(    2, 1, figsize=(8, 12), subplot_kw={'projection': '3d'})# Get the test dataX, Y, Z = axes3d.get_test_data(0.05)# Give the first plot only wireframes of the type y = cax1.plot_wireframe(X, Y, Z, rstride=10, cstride=0)ax1.set_title("Column (x) stride set to 0")# Give the second plot only wireframes of the type x = cax2.plot_wireframe(X, Y, Z, rstride=0, cstride=10)ax2.set_title("Row (y) stride set to 0")plt.tight_layout()plt.show()

output:
在这里插入图片描述

输入的数据格式

与plot_surface的输入格式一样,X,Y原本为一维list,通过np.meshgrid形成网格化数据。Z为二维数据。其中注意调节rstride、cstride这两个值实现行列间隔的调整。
自己试了下:
在这里插入图片描述

reference:

https://matplotlib.org/stable/gallery/mplot3d/hist3d.html

来源地址:https://blog.csdn.net/weixin_46870583/article/details/125318214

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯