使用gnuplot实现性能分析数据画图
2012-07-16 18:29:30   来源:我爱运维网   评论:0 点击:

绘图神器 gnuplot,只需要输入简单的几个命令,就可以绘制出复杂的图形,Linux系统性能测试、分析数据再也不用到excel里面去处理了。一、L...
 
需要解释吗?读懂它是件很容易的事。好吧,我再解释一下:
  • xrange和yrange分别是x轴和y轴的刻度范围,#可以注释掉一行代码,xrange和yrange不管也可以,Gnuplot会自动设置一个合适的值。
     
  • set size 1,1:这是默认设置,设置图的大小为1。
     
  • set key right top:这也是默认设置,设置说明文字的位置为右上角,同样地,你也可以自己设置其它方位,比如:left、center、bottom。
     
  • set xtics format "%.2f":设置x轴的刻度数值保留小数点后2位。
     
  • set ytics format "%.0f":设置y轴的刻度数值保留到整数。
     
  • notitle lw 2:去掉线的说明,这样set key right top就不起作用了。
     
  • lw 2表示linewidth 2,表示把线和点的粗细变为2,默认为1。
     
 
下面看看这次的效果,唯一体现是x轴的刻度,统一为2位有效数字,如图3所示。
 

./usage/MPE_8-1_MR_3.png
图 3: 磁电阻随磁场的变化关系

 

  程序改进:分段拟合

这个图已经十分漂亮了,现在我们开始分段拟合,首先按照实验讲义及上面的图,可以看出在0.00 < B < 0.11段电阻与磁场是二次曲线关系,在0.11 < B < 0.45段,电阻与磁场成线性关系。因此,我们可以加上6行代码:
set term post eps color enh solid
	datafile="MPE_8-1_MR.data"
	set output "MPE_8-1_MR_4.eps"
	set title "Magneto Resistance"
	set xlabel "B/T"
	set ylabel "R/{/Symbol W}"
#	set xrange [0:12]
	set yrange [300:800]
	set size 1,1
	set key right top 
	set xtics format "%.2f"
	set ytics format "%.0f"
	
	y1(x) = a*x**2 + b*x + c
	y2(x) = k*x + d
	
	fit y1(x)  datafile using ($6<0.10 ? $6 : 1/0):7 via a,b,c
	fit y2(x)  datafile using ($6>0.11 ? $6 : 1/0):7 via k,d


	plot	datafile using 6:7 notitle lw 2, \
		y1(x) notitle lw 2, \
		y2(x) notitle lw 2 

到这里,我相信你看代码的能力已经很强了,这6行代码不解释,只给出图,见图4。
 

./usage/MPE_8-1_MR_4.png
图 4: 磁电阻随磁场的变化关系

 

  程序改进:给出拟合公式

图4已经相当完善了,不过,如果能给出两条曲线的拟合公式将再加完美:
set term post eps color enh solid
	datafile="MPE_8-1_MR.data"
	set output "MPE_8-1_MR_5.eps"
	set title "Magneto Resistance"
	set xlabel "B/T"
	set ylabel "R/{/Symbol W}"
#	set xrange [0:12]
	set yrange [300:800]
	set size 1,1
	set key right top 
	set xtics format "%.2f"
	set ytics format "%.0f"
	
	y1(x) = a*x**2 + b*x + c
	y2(x) = k*x + d
	
	fit y1(x)  datafile using ($6<0.10 ? $6 : 1/0):7 via a,b,c
	fit y2(x)  datafile using ($6>0.11 ? $6 : 1/0):7 via k,d

	set label 1 sprintf("R_1 = %.0f B^2 + %.0f B + %.0f", a,b,c) at graph 0.6,0.4 left
	set label 2 sprintf("R_2 = %.0f B + %.0f", k,d) at graph 0.6,0.3 left

	plot	datafile using 6:7 notitle lw 2, \
		y1(x) notitle lw 2, \
		y2(x) notitle lw 2 

这两行代码虽然长,但很简单,"at graph 0.6,0.4 left"是说先在这个图的(0.6,0.4)点处选个基准点,整个图的大小为(1,1),这个很好理解,left是说标签放在这一点的左侧。有图有真相,看图5。

相关热词搜索:gnuplot 性能分析 画图

上一篇:OpenLdap 搭建(Master Slave)、分组、热备及管理
下一篇:最后一页

分享到: 收藏
评论排行