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

使用Matplotlib 3D轴,如何一次拖动两个轴

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

使用Matplotlib 3D轴,如何一次拖动两个轴

为了使mplot3d中两个子图之间的旋转同步,您可以将其连接

motion_notify_event
到一个函数,该函数从旋转的图读取角度并将其应用于其他各个图。

这是图库中添加了所描述功能的示例。

from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmimport matplotlib.pyplot as pltimport numpy as npn_angles = 36n_radii = 8radii = np.linspace(0.125, 1.0, n_radii)angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)x = np.append(0, (radii*np.cos(angles)).flatten())y = np.append(0, (radii*np.sin(angles)).flatten())z = np.sin(-x*y)fig = plt.figure( figsize=(13,6))fig.subplots_adjust(left=0, right=1, top=1, bottom=0, wspace=0)ax = fig.add_subplot(1, 2, 1, projection='3d')ax2 = fig.add_subplot(1, 2, 2, projection='3d')ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.2)ax2.plot_trisurf(x, y, z, cmap=cm.viridis, linewidth=0.5)def on_move(event):    if event.inaxes == ax:        ax2.view_init(elev=ax.elev, azim=ax.azim)    elif event.inaxes == ax2:        ax.view_init(elev=ax2.elev, azim=ax2.azim)    else:        return    fig.canvas.draw_idle()c1 = fig.canvas.mpl_connect('motion_notify_event', on_move)plt.show()

也可能需要额外同步缩放实用程序。在这种情况下,可以使用以下功能

def on_move(event):    if event.inaxes == ax:        if ax.button_pressed in ax._rotate_btn: ax2.view_init(elev=ax.elev, azim=ax.azim)        elif ax.button_pressed in ax._zoom_btn: ax2.set_xlim3d(ax.get_xlim3d()) ax2.set_ylim3d(ax.get_ylim3d()) ax2.set_zlim3d(ax.get_zlim3d())    elif event.inaxes == ax2:        if ax2.button_pressed in ax2._rotate_btn: ax.view_init(elev=ax2.elev, azim=ax2.azim)        elif ax2.button_pressed in ax2._zoom_btn: ax.set_xlim3d(ax2.get_xlim3d()) ax.set_ylim3d(ax2.get_ylim3d()) ax.set_zlim3d(ax2.get_zlim3d())    else:        return    fig.canvas.draw_idle()


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

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

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