我正在将一个重要的应用程序从PHP迁移到Python。一切都很好,除了一个我似乎无法弄清的问题。在

旧的应用程序使用PHP库Image_3D将一些长方体绘制成图像(SVG,尽管这并不重要),并将它们显示在web页面上。在

我几乎把所有的东西都移植到了Flask(w/SQLAlchemy),除了成像。我已经尝试了matplotlib,vpython,几乎绝望到了要OpenGL绑定的地步。在

以下是PHP当前呈现的一些示例:

您可以看到,即使在极端情况下,它仍然足够可读。在

我在Python上的最佳尝试做得相当糟糕:

这幅图像完全不可读。我没有填写内容,因为,坦白地说,这没有意义-你什么都看不出来。任何试图用ax.init_view固定视角的尝试都会更糟,无论是仰角还是方位。在

代码只是一堆点,用fig = plt.figure(frameon=False)

ax = fig.gca(projection='3d')

ax.set_axis_off()

ax.set_aspect('equal')

ax.plot_wireframe(points[:, 0], points[:, 1], points[:, 2], color="b")

plt.savefig(filename, bbox_inches='tight', pad_inches=0)

我肯定我做错了什么,但是我不知道如何在Python/matplotlib中使可读的呈现工作,或者是否有一个不同的库更适合这个任务。在

我突然意识到我没有正确地描述这个问题——这是背包问题的一个业务限制子集。因此,容器和长方体的位置是任意的。可视化模块接收尺寸和位置,并需要渲染它们。前面的例子中的正则性只是一阶最优解,经常被发现,但在大多数情况下不是这样。在

还有一些例子可以说明:

使用matplotlib的更好的解决方案,如下所示。让MPL旋转整个曲线图以显示有用的概述似乎并不容易。

ax.view_init应该允许改变高度,但是对于这样一个狭窄的绘图来说,视野太宽了,它所做的只是稍微改变边缘。在

我正在将一个重要的应用程序从PHP迁移到Python。一切都很好,除了一个我似乎无法弄清的问题。在旧的应用程序使用PHP库Image_3D将一些长方体绘制成图像(SVG,尽管这并不重要),并将它们显示在web页面上。在我几乎把所有的东西都移植到了Flask(w/SQLAlchemy),除了成像。我已经尝试了matplotlib,vpython,几乎绝望到了要OpenGL绑定的地步。在以下是PHP当... new_width = 120 new_height = aspect_ratio * new_width * 0.55 image = image.resize((new_width, int(new_height))) # 将 图像 转换为灰度 图像 image = image.convert('L') pixels = image.getdata() # 定义字符集 chars = ["B","S","#","&","@","$","%","*","!",":","."] new_pixels = [chars[pixel//25] for pixel in pixels] new_pixels = ''.join(new_pixels) # 将字符 输出到控制台 for i in range(0, len(new_pixels), new_width): print(new_pixels[i:i+new_width]) 这个代码将 图像 转换为灰度 图像 ,然后将每个像素映射到字符集中的一个字符。最后,将字符 输出到控制台。你可以根据需要调整字符集和输出宽度。