栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将背景图像添加到3D图

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将背景图像添加到3D图

用于

plot_surface
通过
facecolors
参数绘制图像。

from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmfrom matplotlib.ticker import LinearLocator, FormatStrFormatterimport matplotlib.pyplot as pltimport numpy as npfrom matplotlib._png import read_pngfrom matplotlib.cbook import get_sample_datafig = plt.figure()ax = fig.gca(projection='3d')X = np.arange(-5, 5, .25)Y = np.arange(-5, 5, .25)X, Y = np.meshgrid(X, Y)R = np.sqrt(X**2 + Y**2)Z = np.sin(R)surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.winter, linewidth=0, antialiased=True)ax.set_zlim(-2.01, 1.01)ax.zaxis.set_major_locator(LinearLocator(10))ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))fn = get_sample_data("./lena.png", asfileobj=False)arr = read_png(fn)# 10 is equal length of x and y axises of your surfacestepX, stepY = 10. / arr.shape[0], 10. / arr.shape[1]X1 = np.arange(-5, 5, stepX)Y1 = np.arange(-5, 5, stepY)X1, Y1 = np.meshgrid(X1, Y1)# stride args allows to determine image quality # stride = 1 work slowax.plot_surface(X1, Y1, -2.01, rstride=1, cstride=1, facecolors=arr)plt.show()

如果您需要添加值,请使用

PathPatch

from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmfrom matplotlib.ticker import LinearLocator, FormatStrFormatterimport matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dimport mpl_toolkits.mplot3d.art3d as art3dfrom matplotlib.text import TextPathfrom matplotlib.transforms import Affine2Dfrom matplotlib.patches import PathPatchdef text3d(ax, xyz, s, zdir="z", size=None, angle=0, usetex=False, **kwargs):    x, y, z = xyz    if zdir == "y":        xy1, z1 = (x, z), y    elif zdir == "y":        xy1, z1 = (y, z), x    else:        xy1, z1 = (x, y), z    text_path = TextPath((0, 0), s, size=size, usetex=usetex)    trans = Affine2D().rotate(angle).translate(xy1[0], xy1[1])    p1 = PathPatch(trans.transform_path(text_path), **kwargs)    ax.add_patch(p1)    art3d.pathpatch_2d_to_3d(p1, z=z1, zdir=zdir)# mainfig = plt.figure()ax = fig.gca(projection='3d')X = np.arange(-5, 5, .25)Y = np.arange(-5, 5, .25)Xg, Yg = np.meshgrid(X, Y)R = np.sqrt(Xg**2 + Yg**2)Z = np.sin(R)surf = ax.plot_surface(Xg, Yg, Z, rstride=1, cstride=1, cmap=cm.winter, linewidth=0, antialiased=True)ax.set_zlim(-2.01, 1.01)ax.zaxis.set_major_locator(LinearLocator(10))ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))# add pathces with valuesfor i,x in enumerate(X[::4]):    for j,y in enumerate(Y[::4]):        text3d(ax, (x, y, -2.01), "{0:.1f}".format(Z[i][j]), zdir="z", size=.5, ec="none", fc="k")plt.show()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号