前提・実現したいこと
c++でgnuplotを使って複数のデータファイルを一つのデータファイルにプロットしたいです。
描きたい図はカラーマップで、pm3dを使います。
データを載せたいのですが、行数が多すぎるので今回は載せるのは辞めたいと思います。。
1つずつなら問題なく図が作成できるのでデータの間違いではないと思うので下のコードのどこが問題か教えていただきたいです。
発生している問題・エラーメッセージ
下図のように1つのファイルのデータしかプロットされないです。
該当のソースコード
c++
1#include <iostream> 2#include <string> 3#include <vector> 4#include <fstream> 5#include <stdio.h> 6#include <float.h> 7#include <cmath> 8#include <algorithm> 9#include <numeric> 10 11using namespace std; 12 13int main(){ 14 15 FILE *fs = popen("gnuplot", "w"); 16 fputs("set terminal pngcairo enhanced size 700,600\n",fs); 17 fputs("set output 'figure/XY.png'\n",fs); 18 fputs("set tics font 'Times New Roman,30'\n",fs); 19 fputs("set border lw 2\n",fs); 20 fputs("set pm3d map\n",fs); 21 fputs("set pm3d interpolate 5,5\n",fs); 22 fputs("set size square\n",fs); 23 fputs("set lmargin 0\n",fs); 24 fputs("set bmargin 0\n",fs); 25 fputs("set rmargin 0\n",fs); 26 fputs("set ylabel font 'Times New Roman,35'\n",fs); 27 fputs("set xlabel font 'Times New Roman,35'\n",fs); 28 fputs("set xlabel 'X[mm]'\n",fs); 29 fputs("set ylabel 'Y[mm]'\n",fs); 30 fputs("set ylabel offset -7,0\n",fs); 31 fputs("set xlabel offset 0,-2\n",fs); 32 fputs("set bmargin 3\n",fs); 33 fputs("set xrange [-50:50]\n",fs); 34 fputs("set yrange [-50:50]\n",fs); 35 fputs("set grid xtics ytics lt 1 lw 1 lc rgb 'black'\n",fs); 36 fputs("set grid mxtics mytics lt 1 lw 0.5 lc rgb 'black'\n",fs); 37 fputs("set mxtics 5\n",fs); 38 fputs("set mytics 5\n",fs); 39 fputs("unset key\n",fs); 40 41 fputs("set palette defined (0 '#ffffff',1 '#000090',2 '#000fff',3 '#0090ff',4 '#0fffee',5 '#90ff70',6 '#ffee00',7 '#ff7000',8 '#ee0000',9 '#7f0000')\n",fs); 42 43 fputs("splot 'output/image_z0x0y0.txt' u 1:2:3, 'output/image_z0x2.5y0.txt' u 1:2:3, 'output/image_z0x-2.5y0.txt' u 1:2:3, 'output/image_z0x0y2.5.txt' u 1:2:3, 'output/image_z0x0y-2.5.txt' u 1:2:3, 'output/image_z2.5x0y0.txt' u 1:2:3, 'output/image_z-2.5x0y0.txt' u 1:2:3\n",fs); 44 45 fflush(fs); 46 pclose(fs); 47} 48
試したこと
1つずつなら問題なくsplotできるのですが、複数splotしようとすると1つのファイルのデータしかプロットされません。
補足情報(FW/ツールのバージョンなど)
mac
各データのx軸とy軸の範囲はすべて同じ範囲でしょうか。もし同じであれば重なってしまっている可能性があります。データが大きいということなので載せるのは難しいでしょうが、ファイルのフォーマットやxyzの範囲などの情報があるとよいと思います。
そうですね。x軸とy軸の範囲は全て同じです。試行錯誤しましたが、x軸y軸の範囲が7つのファイルで全て同じなので、一度全てのファイルを読み込んで1つのファイルに落とし込む方が楽そうでした。
調べたところ、splotでファイルを何個もplotさせようとしているコードはあまり(というかほとんど)見当たりませんので、上記のやり方でやることにします。助言ありがとうございます。感謝します。
あなたの回答
tips
プレビュー