Gnuplot 绘制多条曲线

Gnuplot 绘制多条曲线,gnuplot,Gnuplot,几年前,我从我的软件开始使用GNUPLOT,它非常有用。我的软件生成一个包含所有数据的gnuplot命令文件,然后自动调用gnuplot在屏幕或文件上绘制此命令文件。在某些情况下,我的软件会生成多条线作为变量的函数,在这种情况下,我会编写一个包含多个列的表格,但我无法从一个表格中绘制所有曲线,因此我找到的解决方案是使用多个绘图命令,如 plot "-" using 3:2 with lines ls 1 title "X(LIQUID,CU)",\ "" using 4:2 with li

几年前,我从我的软件开始使用GNUPLOT,它非常有用。我的软件生成一个包含所有数据的gnuplot命令文件,然后自动调用gnuplot在屏幕或文件上绘制此命令文件。在某些情况下,我的软件会生成多条线作为变量的函数,在这种情况下,我会编写一个包含多个列的表格,但我无法从一个表格中绘制所有曲线,因此我找到的解决方案是使用多个绘图命令,如

plot "-" using 3:2 with lines ls  1 title "X(LIQUID,CU)",\
"" using   4:2 with lines ls  2 title "X(FCC-A1,CU)",\
"" using   5:2 with lines ls  3 title "X(FCC-..O#2,CU)" 
之后是重复多次的表格,我有plot命令(每次都以“e”结尾)。 最近我开始尝试清理我的代码,我发现GNUPLOT有一个“plot for”命令,我尝试使用这个命令。例如:

plot for [i=3:5] './table1.dat' using i:2 with lines ls i columnhead(i)
工作得非常好,只是我希望表与GNUPLOT命令位于同一个文件中。将“/table1.dat”替换为“-”,然后写入表格(包括末尾的3个“e”)是行不通的,因为这样我只绘制了第一行。如果我像以前一样重复这个表(中间有一个“e”),它是有效的,但是我回到了我已经有的解决方案。 我曾尝试在“e”之后添加“repeat”,但没有成功。 早些时候,我尝试了multiplot,但后来在缩放方面遇到了问题

绘图效果很好,只是我希望避免对我要绘制的每一行重复相同的表格(也是在我的ow代码中),这会导致冗长而混乱。 我确信一定有一些微妙的方法来做我想做的事,但我在手册里找不到


Bo Sundman

需要重复数据的原因是gnuplot正在读取时正在打印。因此,它需要读取数据的次数与您要求的绘图次数相同

您可以先将数据写入某个临时文件,然后进行打印:

F=system("mktemp /tmp/gnuplot-XXXXXXXX")
TITLES="A B C D"
set table F
plot "-" u 1:2:3:4:5 w table
0 1 2 3 4 
1 6 7 8 9 
e 
plot for [i=2:5] F u 1:i tit word(TITLES,i-1)

问题在于
set table
不支持导出列头AFAIK,因此使用单词列表的技巧。

因为版本5.0 gnuplot具有命名数据块,允许您在单个文件中定义可重用的内联数据:

$Table <<EOD
1 11 111
2 22 222
3 33 333
EOD
plot for [i=2:3] $Table using 1:i with lines

$Table这正是我想要的,谢谢。我将升级我的GNUPLOT,并要求OpenCalphad的所有用户也这样做。