使用 bash 脚本文件打开 gnuplot,然后绘制 csv 文件

使用 bash 脚本文件打开 gnuplot,然后绘制 csv 文件

我是 gnuplot 和脚本的新手,在绘制 csv 文件时遇到了麻烦。

我正在尝试让拥有 csv 文件的用户能够使用 gnuplot 绘制他选择的列。这是我目前所拥有的:

echo "Welcome Let's get started"
echo "Lets get started with the data set"
echo "How many x-value data sets will be used in the plot?"
read totxvalues #For now we are starting with one data set
echo "What Column in the Data file will be the xvalue?"
read xcolumn
echo "What column in the Data set will be the yvalue?"
read ycolumn
echo "Name of xlabel"
read xlabel
echo "Name of ylabel"
read ylabel
echo "Name of Graph"
read graphTitle

for FILE in "example.csv"*; do
gnuplot
set datafile separator ","
set xlabel "xlabel"
set ylabel "ylabel"
set title "graphTitle"
plot "$FILE" using $($xcolumn):$($ycolumn)
EOF
done 

我目前正在运行该脚本,它会打开 gnuplot,但它不会输入用户输入的变量。

这是打开 gnuplot 并绘制用户输入的最佳方法吗?要分析的数据将包含大量数据列,这就是为什么我只想一次选择几个数据列。

答案1

主要问题是此处文档格式错误:它需要看起来像

gnuplot << EOF
commands
EOF

此外,如果您希望图表保留在屏幕上(使用默认的 gnuplot 终端类型),那么您可能需要添加-p(持久)选项。

我不认识$($xcolumn):$($ycolumn)你使用的语法:我怀疑这应该只是$xcolumn:$ycolumn

*.csv最后,我怀疑你可能想要一个比 更像的shell glob "example.csv"*

所以:

for FILE in *.csv; do
gnuplot -p << EOF
set datafile separator ","
set xlabel "xlabel"
set ylabel "ylabel"
set title "graphTitle"
plot "$FILE" using $xcolumn:$ycolumn
EOF
done

你的脚本还应该在顶部有一个适当的shebang,#!/bin/bash即或#!/bin/sh

相关内容