解决PDL::Graphics::PGPLOT不能正常工作的问题
黄健  |  2023-08-31  |  科学网  |  211次阅读

如前所述,最近在把两个版本的PDL Book(2012年2月版、2015年5月版)的电子书(.pdf格式)转化为可在IPerl内核的Jupyter Notebook中进行交互学习的电子书(.ipynb格式)。在制作基于2012年2月版第二章内容的.ipynb文件时,示例中的use PDL::Graphics::TriD代码居然不工作,最终自己想办法找到问题解决了

期间也发现,使用PDL::Graphics::PGPLOT的代码中,画散点图的函数不工作。窗口标题giza,窗口背景白色,画图窗口里有坐标、有刻度、有数字,就是没有散点图,一片空白。是不是散点颜色与背景一致了?在Jupyter Notebook页面对应代码框内加代码{color => black},运行后仍然是一片空白;进一步点线结合,加代码{plotline => 1, color => black},这下能看到点牵出的线了,但还是看不到点。于是运行pdl命令,进入后运行demo pgplot测试。结果发现,points、cont、vect等函数都不能正常工作,line等其余各种画图函数都能正常工作。不得其解,于是加入PDL上的邮件列表,然后群发一个求助邮件如下:

Dear all,

I am trying convert the PDL Book in PDF format to an interactive book powered by Jupyter NoteBook with IPerl kernel. In the process, I found that the points function in PDL::Graphics::PGPLOT did not work. Then I used pdl shell. With the command demo pgplot  


    ---- Code:
    # First we define some variables to use for the rest of the demo.
    $x=sequence(10);
    $y=2*$x**2;

    # Now a simple plot with points
    points $x, $y;
    ---- Output:


There is however no points in the popup window, only a 2d graph with two axes and numbers...no points...

After that, I found vect and cont functions might also have some problems and all the other functions worked properly.

What's wrong with my PDL::Graphics::PGPLOT? I installed PDL via cpan on Ubuntu 23.04 with Perl 5.36. The installing process seemed normally except many complains of "Warning: Fortran 2018 deleted feature:..."

Can somebody help me on this issue?

Best wishes,

可惜得到的回复是还没有向邮件列表发送邮件的权限。于是只能自己摸索。先sudo cpan,然后fforce install PDL::Graphics::PGPLOT,结果无效。思考上次fforce PDL::Graphics::TriD后完全正常,前提是先指定好libglut.so.3。所以,恐怕得有合适的库文件后,再编译安装相应Perl模块才行。从窗口标题giza入手, apt search giza,得到了一系列信息如下:

   giza-dev/lunar 1.3.2-1 amd64 [已安装]
       Lightweight scientific plotting library (development files)
   libcpgplot0/lunar,now 1.3.2-1 amd64 [已安装]
       CPGPLOT replacement shared lib based on giza
   libgiza0/lunar,now 1.3.2-1 amd64 [已安装,自动]
       Lightweight scientific plotting library (shared library)
   libpgplot0/lunar,now 1.3.2-1 amd64 [已安装]
       PGPLOT replacement shared lib based on giza

网络搜索转到giza的主页,其中有关于PGPLOT接口的页面,的确说了有不少函数尚未实现或只是部分实现了。看来,要PDL::Graphics::PGPLOT完全正常工作,先得换库才行。最后,sudo apt install pgplot5,使用官方的库,同时自动卸载giza-dev库。然后sudo cpan后fforce install PGPLOT,重新编译安装PGPLOT.so及PGPLOT.pm。进入pdl命令行,demo pgplot测试,都能正常工作了。




文章原载于作者的科学网文章,所述内容属作者个人观点,不代表本平台立场。
本文经过系统重新排版,阅读原内容可点击 阅读原文