我将文件“数据”中的数据排列成两列,即比特率和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"
答案 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
所以,如果你想能够运行它,首先让它可执行 - 只需一次即可。我们假设您将上述文件保存为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