我尝试通过 system()在gnu plot中显示我的数据。 我将一些示例值写入文件,然后尝试使用gnuplot显示它们。
这就是我编写测试数据的方式:
void Dataset::writeDataSetToFile(){
QString filename="/Users/rogerwilco/Desktop/test/data.txt";
QFile file(filename);
if(file.open(QIODevice::WriteOnly))
{
QTextStream stream (&file);
stream << "1" << endl << "9" << endl << "15"<< endl;
}
file.close();
}
然后在Mainwindow中,我触发将数据写入文件并调用Gnuplot来显示图表:
void MainWindow::saveDataToFile(){
myData->writeDataSetToFile();
}
void MainWindow::showGraph() {
system("/usr/local/bin/gnuplot \'/Users/rogerwilco/Desktop/test/plotter\'");
}
我收到此错误消息:
“/ Users / rogerwilco / Desktop / test / plotter”,第22行:警告:跳过不可读的文件“data.txt”“/ Users / rogerwilco / Desktop / test / plotter”,第22行:没有数据在情节
gnuplot的脚本如下所示:
reset
n=100 #number of intervals
max=100.0 #max value
min=0.0 #min value
width=(max-min)/n #interval width
#function used to map a value to the intervals
hist(x,width)=width*floor(x/width)+width/2.0
#set term png #output terminal and file
set output "histogram.png"
set xrange [min:max]
set yrange [0:]
#to put an empty boundary around the
#data inside an autoscaled graph.
set offset graph 0.05,0.05,0.05,0.0
set xtics min,(max-min)/5,max
set boxwidth width*0.9
set style fill solid 0.5 #fillstyle
set tics out nomirror
set xlabel "x"
set ylabel "Frequency"
#count and plot
plot "data.txt" u (hist($1,width)):(1.0) smooth freq w boxes lc rgb"green" notitle
第22行,错误是最后一行。 但是,如果我自己使用shell
gnuplot 'plotter'
它有效。
为什么当我手动输入命令到终端时它才有效,但是当我通过system()进行操作时却没有?
系统:
答案 0 :(得分:0)
我需要在最后一行添加整个路径:
plot "/Users/rogerwilco/Desktop/test/data.txt" u (hist($1,width)):(1.0) smooth freq w boxes lc rgb"green" notitle
。
(应该归功于Galik和Chris Stratton让我走上正确的道路)