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