python-3.x Sage不显示/渲染3D图(部分解决)

pieyvz9o  于 2022-12-01  发布在  Python
关注(0)|答案(4)|浏览(397)

部分解决:通过Sage CLI在jmol中工作

Jupyter笔记本中的SageMath中的3D图仍为空白

编辑:这个问题仍然没有解决,我甚至尝试过引导到一个不同的操作系统(Debian而不是Kali)(不使用Anaconda,将(希望)得到更多的时间来尝试)
如标题所述,并通过此屏幕截图进行了说明:

而不是预期的三维图,只是一个白色的纯背景,其中有一个问号,当单击,显示一个菜单,如下图所示:

我现在已经在这个例子上(在我的系统上)做了相当多的实验,并且......举个例子:
这只显示了一个黑色正方形(而它应该显示一个球体):

sage: u = var('u')
sage: circle = (cos(u), sin(u))
sage: rp = revolution_plot3d
sage: rp(circle, (u, 0, 2*pi), axis=(0, 0),
....:    show_curve=True, opacity=0.5).show(aspect_ratio=(1, 1, 1))

下面的代码(我猜)* 稍微 * 好一点,但仍然不是真正的“如它应该的那样”,或者“如预期的那样”:

sage: u = var('u')
sage: circle = (cos(u), sin(u))
sage: rp = revolution_plot3d
sage: rp(circle, (u, 0, 2*pi), axis=(0, 0), frame=False,
....:    show_curve=True, opacity=0.5).show(aspect_ratio=(1, 1, 1))

(变更:在最后一行的某处包含frame=False)。
灵感
我尝试从SageMath文档重新创建此3D图:

信息/日志:

  • SageMath版本:
SageMath version 9.2, Release Date: 2020-10-24
  • 操作系统:Linux
  • 通过apt安装的SageMath:
sudo apt-get install sagemath

我不需要“得到”这个解决任何时候都很快,现在我主要是做矩阵运算,等等。所以-有没有“匆忙”想出一个解决方案在这里!这将只是一个[加+]能够做的问题描述,但它不是必要的。

任何帮助都非常感激!谢谢!

ee7vknir

ee7vknir2#

就像OP(原作者)一样,我在SageMath 9.6下的Jupyter笔记本中使用show 3d()时也出现了同样的错误。我没有使用JMOL。例如,在SageMath 9.7中,试图在Jupyter笔记本中使用show 3d(),而SageMath 9.7是在Windows 10系统上的WSL 2中的Ubuntu 20.10下编译的

# Franklin Graph
    Frank = graphs.FranklinGraph()
    Frank.show3d()

导致以下错误。

$HOME/sage/sage-9.7/src/sage/repl/rich_output/display_manager.py:610: 
    RichReprWarning: Exception in _rich_repr_ while displaying object:
    [Errno 2] No such file or directory:
    '$HOME/sage/local/lib/sage/ext_data/threejs/threejs-version.txt'
    warnings.warn(

(重新编排格式,以便印刷清晰。)
我的解决方法是将源代码从$HOME/sage/sage-9.7/src/sage/ext_data/threejs复制到$HOME/sage/local/lib/sage/ext_data/threejs。
这并不完全令人满意,因为目录命名表明threejs的安装没有按预期进行。我可以用SageMath开发列表来处理这个问题。

jhdbpxl9

jhdbpxl93#

重大更新:

为了不把虚假的希望介绍给未来的读者:我还没有解决它在Jupyter笔记本。

但是

我已经(可能)用一个查看器修复了它,我的系统已经预装了Jmol;(可能是因为我以前喜欢它,用它做了一些练习,就像在Matlab中一样)

(部分)解决方案:

但这里的事情,当我访问一个SAGE终端(bash -〉sage),例如,绘制一些东西**,通常只会导致白色-或黑色屏幕在Jupyter无论我试图使它工作;**
它打开一个jmol窗口 (实际应用程序- Jmol)
然后把它画出来
我不知道让Jmol和sage数学一起工作是这么容易的(一个实际的事实;我都不知道这是可能的

截图

这里有一些屏幕截图(Jupyter -黑屏,和完全相同的代码-但从Sage Terminal运行

相同代码,但在Sage终端中:

(相同的结果)(这对我来说是不可能的,即使在我 * 可以 *(在木星)(丑陋)-绘图的时候,它也没有显示预期的结果,(颜色有点扭曲,形式与Sage Docs显示的实际绘图几乎没有共同之处)

老实说,我认为-我更喜欢这个,即使Jupyter已经工作(也许在未来的某个时候)这个- jmol应用程序有一些非常整洁的属性,(颜色,轴,和动画(旋转)和其他东西)我真的不知道这一点;在Jupyter中,人们可能可以用鼠标旋转并放大,但不能轻松地改变颜色-(不是说这是更期望的结果,但在我看来-在我的场景中-这是一个,(*)很好的解决方案,如果不是一个实际的解决方案,(在我的情况下,我将继续这样做,它是完美的
希望这对将来的某个人有帮助!

35g0bw71

35g0bw714#

添加另一个答案,因为这是很久以前的事了,而且是一个完全不同的解决方案

通过添加Frame=False,工程完美,可以肯定的是,这真的,工程我已经测试了许多以前的问题,我以前,它似乎工作,我不知道这是什么,但至少它的工作

u = var('u')
circle = (cos(u), sin(u))
revolution_plot3d(circle, (u,0,2*pi), axis=(0,0), 
                  show_curve=True, opacity=0.5).show(aspect_ratio=(1,1,1),
                                                     frame=False)

我还用opacity=1做了一些实验

相关问题