使用shell脚本绘制gnuplot图

方法一:使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值