此问题已在此处有答案:
set matplotlib 3d plot aspect ratio(12个回答)
上个月关门了。
我有一个尺寸为440x219的.jpg图像。
Original .jpg image
我使用Matplotlib来绘制这个图像的表面图,它似乎工作得很好,结果是:
Matplotlib rendered image
然而,你可以看到正方形变形成了矩形。我的问题是:如何让Matplotlib将这些图像渲染为正方形(就像原始的.jpg图像一样)。
我目前正在使用的代码呈现:
fig = plt.figure(figsize=(5, 4))
ax = plt.axes(projection='3d')
ax.plot_surface(X, Y, img_binary, rstride=1, cstride=1, linewidth=0, cmap='gray')
ax.view_init(40, -20)
plt.show()
我想一定有其他的选择。任何建议都将不胜感激。
1条答案
按热度按时间brtdzjyr1#
https://stackoverflow.com/a/64453375/21260084回答了如何设置Axis 3d的长宽比这个更一般的问题,他们提出的解决方案效果很好。
3d surface plot rendering of image
请注意,您还希望/必须缩放第三个维度相对于其他维度。该示例将1像素设置为等于灰度图像范围内的1个变化,但您实际想要的显然取决于上下文。