方法一:使用load指令
例如如下的绘图指令:
set terminal png size 1400,700 font "/usr/share/fonts/kingsoft/simfang.ttf,14"
set output "ab测试结果.png"
set title "ab测试"
set size 1,0.8
set grid y
set xlabel "并发数"
set xrange [0:2000]
set ylabel "响应时间(ms)"
set yrange [0:100]
set ytics nomirror
set y2label "吞吐率"
set y2tics
plot "ab-result.dat" using 1:4 smooth sbezier with linespoint pointtype 2title "吞吐率"\
,"ab-result.dat" using 1:3 smooth sbezier with linespoint pointtype 3 axis x1y2 title "响应时间/y2轴"
set output
将其保存为netstat.txt,然后进入gnuplot绘图命令模式,使用load命令加载:
[root@teset-x86-out ~]# gnuplot
G N U P L O T
Version 4.6 patchlevel 2 last modified 2013-03-14
Build System: Linux x86_64
Copyright (C) 1986-1993, 1998, 2004, 2007-2013
Thomas Williams, Colin Kelley and many others
gnuplot home: http://www.gnuplot.info
faq, bugs, etc: type "help FAQ"
immediate help: type "help" (plot window: hit 'h')
Terminal type set to 'x11'
gnuplot> load "netstat.txt"
方法二:在shell模式下使用
方法一:使用load指令在绘图指令经常变化,但是有只有部分文档变化的时候使用还是不大方便,可以将其改为shell脚本,例如如下,使用EOF
#!/bin/bash
echo "本脚本基于绘图软件gnuplot,使用前请确保gnuplot正确安装"
echo -e "以centos为例:\n\t yum install -y gnuplot"
echo -e "脚本使用帮助:\n\t sh abdraw.sh -h"
# 默认参数
## 服务器类型
server=
## 图片大小
sizel=1400
sizeh=700
## x轴设置
xmin=50
xmax=1000
xtics=50
## 左侧y轴坐标范围
ymin=15000
ymax=30000
## 数据文件路径
dir=.
file=abresult.dat
function usage(){
echo -e "命令格式: \n sh abdraw.sh <commands..>"
echo " -S --server 目标服务器名,用途title携带,可选"
echo " -d --dir 数据文件夹,必传"
echo " -f --file 数据文件名,默认adresult.dat,可选"
exit
}
ARGS=`getopt -a -o S:d:f:h -l server:,dir:,file:,help -- "$@"`
eval set -- "${ARGS}"
while true
do
case "$1" in
-S|--server)
server="$2"
shift
;;
-d|--dir)
dir="$2"
shift
;;
-f|--file)
file="$2"
shift
;;
-h|--help)
usage
;;
--)
shift
break
;;
esac
shift
done
if [ ! -d $dir ]; then
echo "文件夹$dir不存在"
elif [ ! -f $dir/$file ]; then
echo "数据文件$dir/$file不存在"
fi
gnuplot -persist <<EOF
set terminal png size $sizel,$sizeh font "/usr/share/fonts/kingsoft/simfang.ttf,14"
set output "$dir/ab测试结果.png"
set title "ab测试 $server"
set size 1,0.8
set grid y
set xlabel "并发数"
set xrange [$xmin:$xmax]
set xtics $xtics
set ylabel "吞吐率"
set yrange [$ymin:$ymax]
set ytics nomirror
set y2label "响应时间/y2"
set y2tics
plot "$dir/$file" using 1:4 smooth sbezier with lines title "吞吐率"\
,"$dir/$file" using 1:3 smooth sbezier with linespoint pointtype 3 axis x1y2 title "响应时间/y2轴"
set output
EOF