通过qt在gnuplot中保存pdf输出

3
我试图使用pdfcairo终端保存gnuplot绘图的输出为pdf,使用以下代码:
reset
set terminal qt 1 noraise enhanced
set xlabel "Time (sec)"
set ylabel "Displacement (m), Velocity (m/s)"
set title "Vanderpol Oscillator using Runge Kutta's method"
set key box top left spacing 1.5
plot 'data.txt' using 1:2 with lines title 'Displacement', \
     'data.txt' using 1:3 with lines dashtype 2 linecolor 7 \
        title 'Velocity'
set terminal pdfcairo enhanced color notransparent
set output 'vanderpol_pdfcairo.pdf'
replot
unset output
unset terminal

然而,qt终端的输出和pdfcairo终端的输出略有不同。下面是通过pdfcairo终端输出的结果:

output via pdfcairo

然而,qt终端的输出如下所示:

output via qt

请注意差异的图例框。是否有一种方法可以通过gnuplot命令保存qt终端的输出?
为了完整起见,以下是部分数据文件。
 # x   y1   y2
 0.00000000       2.00000000         0.00000000    
 0.100000001       1.99093056       -0.172638252    
 0.200000003       1.96694851       -0.300697386    
 0.300000012       1.93182826       -0.397370458    
 0.400000006       1.88817477       -0.472826719    
 0.500000000       1.83771741       -0.534503400    
 0.600000024       1.78155255       -0.587733626    
 0.699999988       1.72032225       -0.636360347    
 0.800000012       1.65433800       -0.683229983    
 0.900000036       1.58366048       -0.730560362    
 1.00000000       1.50814855       -0.780208290    
 1.10000002       1.42748523       -0.833866239    
 1.20000005       1.34118605       -0.893212378    
 1.30000007       1.24859416       -0.960030317    
 1.39999998       1.14886522        -1.03630733    
 1.50000000       1.04094255        -1.12430966    
 1.60000002      0.923527122        -1.22661817    
 1.70000005      0.795047462        -1.34608305    
 1.80000007      0.653641462        -1.48561156    
 1.89999998      0.497173846        -1.64762938    
 2.00000000      0.323334455        -1.83295059    
 2.10000014      0.129894391        -2.03868413    
 2.20000005      -8.47651213E-02    -2.25484443    
 2.29999995     -0.320725024        -2.45990729    
 2.40000010     -0.575173676        -2.61727047    
 2.50000000     -0.840935469        -2.67749405    
 2.60000014      -1.10578239        -2.59248185    
 2.70000005      -1.35379517        -2.34094477    
 2.79999995      -1.56921184        -1.94889915    
 2.90000010      -1.74111176        -1.48351884    
 3.00000000      -1.86605072        -1.02113712    
 3.10000014      -1.94729543       -0.615993023    
 3.20000005      -1.99192703       -0.290263236    
 3.29999995      -2.00793982        -4.20439988E-02
 3.40000010      -2.00246644        0.142086729    
 3.50000000      -1.98111856        0.278029412    
 3.60000014      -1.94798887        0.379831105    
 3.70000005      -1.90591788        0.458439767    
 3.79999995      -1.85680115        0.521885574    
 3.90000010      -1.80185127        0.575913012    
 4.00000000      -1.74179327        0.624632478    

[EDIT]: qt终端是如何将显示的输出保存为PDF的?相同的C/C++代码是什么?
1个回答

2
两种不同的图形库被使用。毫不意外:qt终端使用Qt,pdfcairo终端使用cairo。如果你想让交互式显示更好地匹配硬拷贝输出,你有几个选择。
  1. qt终端窗口在左上角有一个小部件,可以使用Qt库创建当前绘图的pdf副本。这应该与屏幕显示非常接近。
  2. wxt交互终端是qt终端的另一种替代方案。它使用cairo图形库,因此wxt屏幕显示应该与pdfcairo终端产生的输出非常接近。
  3. wxt终端窗口有一个硬拷贝输出的小部件,就像qt显示窗口一样。这个输出应该更接近于屏幕显示。
目前没有命令行选项可使用Qt库生成pdf文件。

谢谢您的回答。我知道qt和wxt中有GUI保存选项。我也不喜欢wxt终端,因为它会时不时地崩溃。请参见[此处](https://sourceforge.net/p/gnuplot/bugs/1885/)的错误报告。我想在我的代码中编写脚本来保存选项,因此请求CLI qt保存选项。在您的回答后稍微更新了我的问题。 - ASarkar
你询问关于C++代码的问题:gnuplot问题跟踪器上有一个旧的补丁(2014年),它添加了一个命令行机制,使用Qt库生成pdf/svg/png图。它早于从gnuplot 4到gnuplot 5的代码重构,因此我不知道更新它以适用于当前代码库需要多少工作量。这个任务已经在项目的TODO列表上有一段时间了。如果您觉得它有用,请在跟踪器上提供反馈。https://sourceforge.net/p/gnuplot/patches/665/ - Ethan
谢谢。我希望上面的回复可以被选为答案。尽管我怀疑我是否具备必要的编程知识来跟进。 - ASarkar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接