在matplotlib中改变三维绘图的纵横比

2024-06-28 11:06:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用matplotlib绘制一个点云,我想延长时间轴,同时保持x轴和y轴不变,基本上将我的绘图变成一个长方形而不是立方体。目前我有以下代码:

def plot_events(event_slice, cap_events, frame_idx):
number_to_display = 5
number_cap_events_to_display = 1
eventsize = 2

plt.rcParams.update({'font.size': 22})

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.view_init(elev=33., azim=140)

ax.set_xlabel('time [s]')
ax.set_ylabel('x')
ax.set_zlabel('y')

ax.set_xticklabels([""])
ax.set_yticklabels([""])
ax.set_zticklabels([""])

ax.set_ylim([0, 240])
ax.set_zlim([0, 180])

X = event_slice[0::number_to_display, t_col]
Y = event_slice[0::number_to_display, x_col]
Z = event_slice[0::number_to_display, y_col]

ax.scatter(X, Y, Z, s=eventsize, c=(event_slice[0::number_to_display, 3]),
           edgecolors='none', cmap=custom_cm)
ax.scatter(cap_events[0::number_cap_events_to_display, t_col], cap_events[0::number_cap_events_to_display, x_col],
           cap_events[0::number_cap_events_to_display, y_col], s=eventsize, c='k',
           edgecolors='none')

fig.tight_layout()
plt.show()

plt.close()

结果图如下: enter image description here 只要改变时间轴的范围,就会挤压数据,同时保持轴的大小不变。在

我知道这个问题有一些“解决方案”;特别是herehere,但这些答案要么对我不起作用,要么要求我在matplotlib库中实际编辑代码,然后导致我的其他脚本停止工作。。。而且,这些答案现在已经很老了(最近的2012年),所以我想知道是否有新的解决方案来解决这个问题。在


Tags: to代码eventnumbermatplotlibdisplayfigslice