当前位置: 首页 > article >正文

NS3网络模拟器中如何利用Gnuplot工具像MATLAB一样绘制各类图形?

NS3网络模拟器中如何利用Gnuplot工具像MATLAB一样绘制各种图形?

文章目录

  • 1. 简介
  • 2. 基本用法
  • 3.NS3绘图实例

1. 简介

Gnuplot是一个强大的命令行驱动的绘图工具,由Colin Kelly和Thomas Williams于1986年开始开发,支持二维和三维图形绘制。
特点:

  • 多平台支持:适用于Linux、OS/2、MS Windows、OSX、VMS以及许多其他平台。
  • 交互式与批处理模式:既可以通过命令行交互地输入指令进行绘图,也可以编写脚本批量生成图形,方便自动化处理。
  • 丰富的图形类型:支持多种2D和3D图形,如折线图、散点图、柱状图、曲面图等,还支持参数方程绘图、极坐标绘图等。
  • 数据格式灵活:可以直接读取包含数据的文本文件,数据文件中的数据应按照列排列,列之间用空格或制表符分隔,注释行以“#”开头会被忽略。
  • 可定制性强:用户可以通过设置各种参数来定制图形的外观,包括坐标轴范围、标签、刻度、线条样式、颜色、字体等。
  • 输出格式多样:支持多种输出格式,如PNG、JPEG、EPS、PDF、SVG等,方便在不同场合使用。

2. 基本用法

  • 基础绘图:例如绘制正弦函数图像,在命令行中输入plot sin(x)即可。还可以通过添加更多参数来定制图形,如set title
    “Some math functions” // 设置图片标题、set xrange [-10:10] // 设置横坐标范围等。

  • 从数据文件绘图:假设有一个名为“fileA.dat”的数据文件,文件中第一列为x值,第二列为y值,可以使用plot “fileA.dat”
    using 1:2 title 'data A’来绘制该数据的折线图。

  • 绘制多条曲线:在同一张图中绘制多条曲线时,可以使用逗号分隔不同的绘图语句,如plot sin(x) title ‘Sine’,
    cos(x) title ‘Cosine’。

3.NS3绘图实例

以NS3中lr-wpan低速率个域网模型中的lr-wpan-error-distance-plot.cc为例,绘制性能曲线图。

1、 安装Gnuplot工具。

sudo apt-get install gnuplot

2、 仿真代码中添加Gnuplot绘图相关代码。
首先,加入头文件:

#include <ns3/gnuplot.h>

其次,创建plt文件和eps文件,其中eps文件用于存放记录数据,plt文件用于存放eps文件:

std::ofstream berfile("802.15.4-psr-distance-sensi.plt");
Gnuplot psrplot = Gnuplot("802.15.4-psr-distance-sensi.eps");

然后,在仿真运行过程记录数据,如下代码所示,如果想绘制多条性能曲线,分开多个psrdataset记录,并分别AddDataSet到eps文件中即可:

for(int k = 0; k<7; k++)
{
	Gnuplot2dDataset psrdataset(std::to_string(rxSensi[k]) + "dBm");
	for (int j = minDistance; j < maxDistance; j += increment)
	{
			//	记录数据
			psrdataset.Add(j, g_packetsReceived / 1000.0);
	}
	//将数据存入eps文件
	psrplot.AddDataset(psrdataset);
}

最后,将记录的所有数据加上标题、X轴、Y轴等信息写入plt文件。

    psrplot.SetTerminal("postscript eps color enh \"Times-BoldItalic\"");
    psrplot.SetLegend("distance (m)", "Packet Success Rate (PSR)");
    psrplot.SetExtra("set xrange [0:200]\n\
                      set yrange [0:1]\n\
                      set grid\n\
                      set style line 1 linewidth 5\n\
                      set style increment user");
    psrplot.GenerateOutput(berfile);
    berfile.close();

3、通过Gnuplot工具将plt文件转为可查看的eps图片。

gnuplot 802.15.4-psr-distance-sensi.plt

生成的eps文件通常在NS3的运行目录,如~/ns-allinone-3.38/ns-3.38/目录下,双击eps图片文件,即可查看:

在这里插入图片描述

如下图所示,绘制了不同接收灵敏度下,随着通信距离的增加,包接收成功率PSR的情况。由此也可知道不同接收灵敏度的最大通信距离。

在这里插入图片描述


http://www.kler.cn/a/514517.html

相关文章:

  • 阿九的python 爬虫进阶课18.3 学习笔记
  • 第二十四课 Vue中子组件调用父组件数据
  • Node.js 完全教程:从入门到精通
  • 以单用户模式启动 Linux 的方法
  • 数据分析 基础定义
  • 豆包升级了“眼睛”,看APP截图就能写代码了!超低价让多模态AI普惠
  • Vue - ref( ) 和 reactive( ) 响应式数据的使用
  • 22.日常算法
  • stm8s单片机(一) 工程塔建与第一个实验程序
  • 漏洞情报:为什么、要什么和怎么做
  • CrypTen——基于pytorch的隐私保护机器学习框架
  • Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合
  • Julia语言的区块链
  • Java设计模式 三 工厂方法模式 (Factory Method Pattern)
  • HTML 基础入门:核心标签全解析
  • 深圳大学-计算机系统(3)-实验三取指和指令译码设计
  • simulink入门学习01
  • Redis、MongoDB 和 MySQL评估
  • IBM湖仓一体与向量数据库:访问MinIO控制台(Accessing the MinIO console)
  • AI对齐与开源发展:多学科融合创新之路
  • 第二讲 矩阵消元——用矩阵的左乘表示矩阵消元的过程
  • Spring注解篇:@RequestMapping详解
  • ESP-Mesh-Lite组网方案,赋能设备多场景联网通信,无线交互控制应用
  • PHP常见正则表达式
  • 不用安装双系统,如何在mac上玩windows游戏呢?
  • vim如何显示行号