以前Okumura-Hata模型分析,使用了MATLAB进行绘图,后面就想着学习一下gnuplot的多组数据绘图方法,而后用gnuplot完成这个绘图。(除了多组数据的绘图,这里还介绍了gnuplot曲线样式,图例设置以及添加文字说明这些功能的实现。)web
先看结果:
下面介绍一下绘图的过程:编程
使用C语言编程产生6组数据。这里给出其中一组数据产生的代码:ide
#include<stdio.h> #include<math.h> 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个数据文件都生成后就能够开始进行画图了。svg
首先在数据文件的目录下输入gnuplot命令:学习
E:\tcc_project\Hata>gnuplot
设置横纵坐标范围,横纵坐标名称:code
gnuplot> set xrange [0:20] gnuplot> set yrange [90:180] gnuplot> set xlabel ‘d/Km’ gnuplot> set ylabel ‘L<dB>’
去除图例(由于我打算本身添加说明):xml
gnuplot> unset key
设置label对图像进行说明:blog
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
而后就能够获得最后的图像了。ci
补充:关于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的位置,默认是坐标轴对应的坐标位置。