提问人:Louis Strous 提问时间:1/6/2020 最后编辑:Louis Strous 更新时间:3/11/2022 访问量:249
有没有人设法在 Windows 上使用 Strawberry Perl 5.30.1.1 的 PDL 版本使用 PDL 创建绘图?
Has anyone managed to create plots with PDL using the PDL edition of Strawberry Perl 5.30.1.1 on Windows?
问:
有没有人设法在 Windows 上使用 PDL 版本的 Strawberry Perl 使用 PDL(Perl 数据语言)创建绘图?
我在 Windows 10(64 位)上从 http://strawberryperl.com/releases.html 安装了 Strawberry Perl 5.30.1.1 的 PDL 版本,启动了 PDL (pdl2),并尝试显示 PDL 书籍(2015 版)中第一个示例中描述的绘图:
pdl> use PDL::Graphics::Simple
pdl> imag (sin(rvals(200,200)+1))
但得到了
Trying gnuplot (PDL::Graphics::Gnuplot)...nope
Trying pgplot (PDL::Graphics::PGPLOT::Window)...nope
Trying plplot (PDL::Graphics::PLplot)...nope
Trying prima (PDL::Graphics::Prima)...nope
Runtime error: Sorry, all known plotting engines failed. Install one and try again.
尽管 gnuplot 5.2 补丁级别 6 包含在该版本的 Strawberry Perl 中。
我发现 PDL 没有检测到 gnuplot,因为 Alien::Gnuplot v1.033 中存在问题。如果我将 Alien::Gnuplot::load_gnuplot 的特定于 Windows 的部分更改为
if($^O =~ /MSWin32/i) {
if( $exec_path =~ m/([\"\*\?\<\>\|])/ ) {
die "Alien::Gnuplot: Invalid character '$1' in path to gnuplot -- I give up" ;
}
use Win32::Job;
my $job = Win32::Job->new;
open my $ofh, ">$file";
if (defined $ofh) {
my $pid = $job->spawn(undef, qq{"$exec_path" ${file}_gzinta},
{ no_window => 1, stdout => $ofh, stderr => $ofh });
if (defined $pid) {
$job->run(3); # wait at most 3 seconds for job to finish
}
}
}
然后运行 PDL 示例将生成:
Trying gnuplot (PDL::Graphics::Gnuplot)...PDL::Graphics::SImple: Gnuplot exists but yours doesn't support either the x11 or wxt terminal
Trying pgplot (PDL::Graphics::PGPLOT::Window)...nope
Trying plplot (PDL::Graphics::PLplot)...nope
Trying prima (PDL::Graphics::Prima)...nope
Runtime error: Sorry, all known plotting engines failed. Install one and try again.
因此,检测到 Gnuplot,但显然无法满足一些额外的要求。
因此,Windows 上 Strawberry Perl 5.30.1.1 的 PDL 版附带的 gnuplot 版本似乎不适合 PDL 使用,即使 Alien::Gnuplot 问题已修复——但随机用户(我)应该是第一个注意到这一点的人,这似乎很奇怪。还是我做错了什么?
我在 https://rt.cpan.org/Ticket/Display.html?id=131361 报告了这个明显的错误,但我对其他用户在 Windows 上使用此版本的体验感兴趣。
编辑 2020-01-10:https://pdl.perl.org 说 Strawberry Perl 的 PDL 版本是在 Windows 上安装 PDL 的“绝对最简单的方法”,并且没有提到当时需要安装的任何其他内容。
它还提到了一种“替代的简单方法”,涉及显式安装 PGPLOT,这是 PDL 尝试使用的其他图形引擎之一。
言下之意是,“绝对最简单的方法”不需要额外的工作来安装图形引擎,但我的经验是不同的。
我的问题不是“我还需要安装哪些其他东西才能使我的 PDL 使用图形引擎?我想知道它是否可以开箱即用,正如“绝对最简单的方法”所暗示的那样。
答:
不幸的是,在撰写本文时,对 Windows 的 PDL 图形支持有些薄弱。该命令有效(演示),但正如您所注意到的,支持的各种图形驱动程序在各个方面都不起作用。demo 3d
PDL::Graphics::TriD
PDL::Graphics::Simple
好消息是,正在采取措施来纠正这个问题 - 例如,旨在允许在 Windows 上安装 PLplot。如果您想提供帮助(编码、测试,甚至只是报告特定问题),请查看各个模块的 GitHub 页面,了解当前跟踪的问题:Alien::PLplot
评论