我想寫的結果gnuplot操作到PNG文件,這成功了,但我需要生成大約100 PNG文件,在這裏我遇到了問題,因爲我收到一個錯誤,「最大數量的臨時文件gnuplot是27「。當我使用方法remove_tmpfiles()時,所有圖像都可以正確生成,但其中大約20-30個是不可打開的。當我僅保存推薦的27張圖像時,不會出現此錯誤。Gnuplot保存很多圖像
Gnuplot::set_GNUPlotPath(GNUPLOT_PATH);
Gnuplot *main_plot = new Gnuplot;
main_plot->cmd("set terminal pngcairo\n");
for(int j=0; j<100;j++)
{
rysuj_wagi(j, main_plot);
if(j%25 == 0) main_plot->remove_tmpfiles();
}
void rysuj_wagi(int numer, Gnuplot * main_plot)
{
std::ostringstream oss;
oss <<"set output 'waga" << numer<<".png'";
string output = oss.str();
cout<<output;
main_plot->cmd(output);
main_plot->set_grid();
main_plot->set_xrange(-5,5);
main_plot->set_yrange(-5,5);
main_plot->set_style("linespoints");
main_plot->set_pointsize(1.0);
vector<double> x, y;
x.push_back(0);
y.push_back(0);
x.push_back(punktyWagX[numer]);
y.push_back(punktyWagY[numer]);
main_plot->reset_plot();
main_plot->plot_xy(x, y);
}
你碰巧知道出路嗎?
哪些文件無法打開?嘗試添加'main_plot-> cmd(「set output」);'在函數'rysuj_wagi'的末尾。只有在遇到新的'set output'文件名''時,Gnuplot纔會完成輸出文件。也許這會干擾'remove_tmpfiles()'。爲了避免這種情況發送'set output'(是的,沒有文件名)可能會有所幫助。 – Christoph
它始終沒有創建關於每25個最後10個圖像。您的解決方案的作品,但我刪除temp_files()約4個100不可打開的情況下。我的想法是,它刪除temp_file過快,所以我強迫它睡一會兒(int j = 0; j <100; j ++) rysuj_wagi(j,main_plot);如果(j == 25 || j == 50 || j == 75)(\t \t main_plot-> remove_tmpfiles(); } },這也適用。感謝您的努力。 – Maximus