python - Matplotlib 转换和在 3D 中绘制 2D 事物
问题描述
我正在尝试创建一个透视图,其中我有一个 2D 图形“悬停在”另一个 2D 图形上。https://matplotlib.org/stable/gallery/mplot3d/pathpatch3d.html足以让我开始。这三行特别有用:
p = Circle((5, 5), 3)
ax.add_patch(p)
art3d.pathpatch_2d_to_3d(p, z=0, zdir="x")
我通过转换制作了二维图形,通过类似的操作
rect = patches.Rectangle((1,2),3,4)
trans = Affine2D().rotate_around(-5, -6, pi/7) + ax.transData
rect.set_transform(trans)
ax.add_patch(rect)
所以我想我只能art3d.pathpatch_2d_to_3d(rect, z=0, zdir="z")
在最后添加。那行不通:我有一个巨大的矩形。如何让转换部分与 2D 到 3D 部分一起使用?
作为第二次尝试,我尝试将变换应用于左下角的坐标,这样我可以避免set_transform
:
trans = Affine2D().rotate_around(-5, -6, pi/7) + ax.transData
rect = patches.Rectangle(trans.transform((1,2)),3,4, angle = pi/7)
ax.add_patch(rect)
art3d.pathpatch_2d_to_3d(rect, z=0, zdir="z")
阅读https://matplotlib.org/stable/tutorials/advanced/transforms_tutorial.html,我发现+ax.transData
原因很麻烦。从我的第二次尝试中省略它会产生一些接近的结果:至少现在矩形的大小是合理的。但它并不完全处于正确的位置。
解决方案
推荐阅读
- angular - Angular:如何从后端加载 svg 文件并将其内容用作模板?
- sql - 在 Oracle 中对集合类型“对象”进行批量收集
- applescript - 如何在 AppleScript 中仅对连接字符串的一部分进行 URLencode
- angular - 带有 ng-template 的 Angular 动态组件
- angular - ngx-extended-pdf-viewer 不显示文本(错误的 cmaps 路径)
- java - 如何让 JMETER 在 1 秒内发出 166 个请求?
- delphi - 无法关闭 Delphi 表单而不引起哔声
- python - Pandas 删除列中一组关键字后的文本
- css - 可爱的 ExpressionChangedAfterItHasBeenCheckedError
- java - 信息:检测到的方言:W3C 使用 Selenium Java