从文件中绘制gnu图,其中包含Bash中图形的x和y标题

时间:2018-01-24 11:14:02

标签: bash gnuplot

我将文件“数据”中的数据排列成两列,即比特率和PSNR。我想绘制gnu图,使x轴具有标题比特率,y轴具有标题PSNR。还显示图表的标题。

set title "Rate Distortion Curve"
set xlabel "bit rates"
set ylabel "psnr"
set grid
gnuplot -p -e "plot 'data' with lp" 

1 个答案:

答案 0 :(得分:3)

虽然您似乎将bash命令和变量与gnuplot命令和变量混合在一起,但不确定是什么问题。

gnuplot编写完整的脚本:

#!/usr/local/bin/gnuplot -persist
set terminal png size 1200,800
set output 'result.png'
set title "Rate Distortion Curve"
set xlabel "bit rates"
set ylabel "psnr"
set grid
plot 'data' with lp

或者,编写一个调用bash作为其中一个方面的gnuplot脚本,它允许您在开始gnuplot之前灵活地使用参数和shell执行操作:

#!/bin/bash

# file is a bash variable set to the first parameter
file=$1

# now start gnuplot and pass variables and commands to it in a "heredoc"
gnuplot <<EOF
set terminal png size 1200,800
set output "$file"
set title "Rate Distortion Curve"
set xlabel "bit rates"
set ylabel "psnr"
set grid
plot 'data' with lp
EOF

enter image description here

所以,如果你想能够运行它,首先让它可执行 - 只需一次即可。我们假设您将上述文件保存为plot,您可以这样做:

chmod +x plot

然后你可以用

运行它
./plot output.png

它将创建一个名为output.png的图像文件。

在回答您的评论时,如果您要在同一轴上绘制两个数据,请使用以下内容 - 请注意第一行末尾的逗号和斜杠:

plot "data.txt" using 1:2 with linespoints title 'time',  \
     "data.txt" using 1:3 with linespoints title 'size'

以上假设您的数据如下所示,分为3列:

10 1.32632 1.8897552
11 1.33474 1.9563009
12 1.37261 2.0283514