【问题标题】:Plotting two 2D plots on a 3D plot在 3D 图上绘制两个 2D 图
【发布时间】:2015-05-27 08:53:03
【问题描述】:

我正在尝试使用 python 根据其能量来绘制激光的横截面。在实验上,我通过在横截面上进行手动 1D 切片来做到这一点,它分别为我提供沿 x 和 y 轴的数据,因此我最终得到以毫米为单位的 x 和 y 数据以及以能量为单位的 z 数据。

我想将此数据连接到 3D 图上,但我不知道如何以不同方式定位不同的条。

到目前为止我有:

fig = plt.figure(figsize = (14, 10))
ax1 = fig.add_subplot(111, projection = '3d').plot(x1, y1)
ax2 = fig.add_subplot(111, projection = '3d').plot(x2, y2)

这两个图位于同一轴上,平放在 3D 图上。我希望他们都站直,并且 x1、y1 和 x2、y2 朝不同的方向移动(即在图上相互垂直)。

这可能吗?有人对如何做到这一点有任何建议吗?

【问题讨论】:

  • 我还要提一下,x1、y2 有 155 个点,而 x2、y2 有 218 个点……激光是椭圆的。

标签: python matplotlib plot 3d


【解决方案1】:

如果我理解正确,您希望第一个绘图位于 xz 平面,第二个位于 yz 平面。这是可能的,只需用零填充图形的冗余维度:

ax = fig.add_subplot(111, projection = '3d')
ax.plot(x1, np.zeros_like(x1), y1)
ax.plot(np.zeros_like(x2), x2, y2)

这(使用适当的数据)产生以下图片:

【讨论】:

  • 非常感谢!我倾向于过度思考这样的事情,并说服自己这是非常复杂的,而事实并非如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 2015-05-30
  • 2015-12-18
  • 2020-05-18
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多