这是一篇很早以前写的小文章,最初发表于我的搜狐博客(2008-09-23 22:55),因为自从转移到这里后,sohu 博客就不再维护了,所以把这篇文章也一起挪了过来。
GNUPLOT 是一款功能强大的跨平台的科学数据可视化工具,可以满足大多数的数据显示功能,但是 GNUPLOT 本身没有提供其他语言的接口。虽然我们可以利用操作系统提供的管道(pipe)功能操纵GNUPLOT, 但是这并非是一件非常简单的事情。gnuplot_i 为我们完成这项工作,它提供了一组简单、友好的程序接口,可以让我们轻松的在程序中调用GNUPLOT 完成复杂的图形显示功能。
当前版本的gnuplot_i 包含2个程序文件:
gnuplot_i.c
gnuplot_i.h
安装 gnuplot_i 非常简单,在此不再描述,读者可以直接参考README 文件。
下面是一个最简单的例子:
#include "gnuplot_i.h" int main(int argc, char *argv[]) { gnuplot_ctrl * h ; h = gnuplot_init() ; gnuplot_plot_equation(h, "sin(x)", "Sine wave"); gnuplot_close(h); }
gnuplot_setstyle(h, "impulses") ; gnuplot_set_xlabel(h, "my X label") ; gnuplot_set_xlabel(h, "my Y label") ;
char myfile[] = "/data/file_in.dat" ; int i ; gnuplot_cmd(handle, "plot '%s'", myfile); for (i=0 ; i<10 ; i++) { gnuplot_cmd (handle, "plot y=%d*x", i); } gnuplot_cmd(h, "set terminal postscript") ; gnuplot_cmd(h, "set output \"curve.ps\"") ;
gnuplot_i 并非是毫无缺点,首先 GNUPLOT 中的splot命令在gnuplot_i没有提供相应的接口,GNUPLOT 中的鼠标交互操作也无法利用gnuplot_i控制。由于使用管道,效率并不是很高,当程序异常退出后会留下临时文件。但总得来说,gnuplot_i 还是可以满足一般的需要的。如果需要更多的功能,建议还是使用那些专门的数据图像显示库,比如plplot,qwt 等。