gnuplot多组数据绘图实例

之前Okumura-Hata模型分析,使用了MATLAB进行绘图,后面就想着学习一下gnuplot的多组数据绘图方法,然后用gnuplot完成这个绘图。(除了多组数据的绘图,这里还介绍了gnuplot曲线样式,图例设置以及添加文字说明这些功能的实现。)

先看结果:
gnuplot多组数据绘图实例_第1张图片
下面介绍一下绘图的过程:

使用C语言编程产生6组数据。这里给出其中一组数据产生的代码:

#include
#include

int main()
{
	double f_c=900;
	double h_te=30;
	double h_re=1;
	double L_city;
	int i;
	int d;

	for(i=1;i<=20;i++)
	{
		d=i;
		L_city= 69.55+26.16*(log10(f_c))-13.82*(log10(h_te))-(3.2*(log10(11.75*h_re))*(log10(11.75*h_re))-4.97)+(44.9-6.55*(log10(h_te)))*(log10(d));
		printf("%d %f\n",i,L_city);
	}
	return 0;
}

然后在命令窗口生出数据文件(具体方法之前的文章有写到),在6个数据文件都生成后就可以开始进行画图了。

首先在数据文件的目录下输入gnuplot命令:

E:\tcc_project\Hata>gnuplot

设置横纵坐标范围,横纵坐标名称:

gnuplot> set xrange [0:20]
gnuplot> set yrange [90:180]
gnuplot> set xlabel ‘d/Km’
gnuplot> set ylabel ‘L

去除图例(因为我打算自己添加说明):

gnuplot> unset key

设置label对图像进行说明:

gnuplot> set label 1 “city” at 4,110
gnuplot> set label 2 “suburb” at 6,140
gnuplot> set label 3 “country” at 8,170
gnuplot> set label 4 “o – 900MHz” at 14.5,110 
gnuplot> set label 5 “x – 700MHz” at 14.5,105 

进行多条曲线绘图:

gnuplot> plot “Hata1_1.dat” u 1:2 w lp lt -1 pt 4,\
>”Hata1_2.dat” u 1:2 w lp lt -1 pt 4,\
>”Hata1_3.dat” u 1:2 w lp lt -1 pt 4,\
>”Hata1_4.dat” u 1:2 w lp lt -1 pt 1,\
>”Hata1_5.dat” u 1:2 w lp lt -1 pt 1,\
>”Hata1_6.dat” u 1:2 w lp lt -1 pt 1

然后就可以得到最后的图像了。

补充:关于gnuplot作图命令的说明

① 点线风格

linestyle——连线风格
linetype——连线种类
linewidth——连线粗细
linecolor——连线颜色
pointtype——点的种类
pointsize——点的大小

这些命令是可以缩写的,就像我写的 :

gnuplot> plot "Hata1_1.dat" w lp lt -1 pt 4

下面给出了一些样式:
连线种类:
在这里插入图片描述
点的类型:
在这里插入图片描述

② 图例设定

这里我们用到的是去除图例设定(因为我打算自己添加说明)命令为:

gnuplot> unset key;

下面是对图例位置设定的一些命令:

gnuplot> set key left           %放在左边,还可以使用right
gnuplot> set key bottom         %放在下面,默认放上面
gnuplot> set key outside        %放在外面
gnuplot> set key left bottom    %可以将上面的进行组合,这个表示左下
gnuplot> set key 0.5,0.6        %将图例放在(0.5,0.6)位置

③ 多组数据绘图

对于多组数据的绘图,先生成对应数据文件,就可以使用gnuplot画图了:

gnuplot> plot “Hata1_1.dat” u 1:2 w lp lt -1 pt 4,\
>”Hata1_2.dat” u 1:2 w lp lt -1 pt 4

④ 添加文字说明

需要在图像中添加一些文字时,就要用到标签,命令如下:

gnuplot> set label 1 “city” at 4,110

这里使用at设置label的位置,默认是坐标轴对应的坐标位置。

你可能感兴趣的:(gnuplot,无线通信)