ï¼è¿½è¨ï¼ 11/1/19ï¼
ææ°çã¯ãã¡ãã«ãªãã¾ãï¼d:id:hecomi:20101209:1291888423
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
C++ããgnuplotããã¤ããã¤ãªãã¦ä½¿ç¨ããã¯ã©ã¹ï¼CGnuplotã使ãã¾ãããï¼id:hecomi:20100709:1278686045ï¼ï¼ãã«ããããããåºæ¥ãããã«ããã®ã§ãç´¹ä»ãã¾ãï¼
gnuplot.hï¼ãããhttp://codepad.org/WwhXAuuy
gnuplot.cppï¼ã http://codepad.org/5v7DKGaM
NYSLã©ã¤ã»ã³ã¹ãªã®ã§ï¼æ°ãåãããã©ããï¼
ãã«ãããããããããã®ï¼ã¤ã®ææ³
gnuplotã«ã¯ï¼è¤æ°ã®ã°ã©ããããããããçºã«ï¼ã¤ã®æ¹æ³ãç¨æããã¦ãã¾ãï¼
multiplotã®ä½¿ç¨
ï¼ã¤ã¯ï¼set multiplotã使ç¨ããæ¹æ³ã§ãï¼
gnuplot > set multiplot gnuplot > set xrange[-1:1] gnuplot > set yrange[-1:1] multiplot > plot x*x multiplot > plot x*x*x multiplot > unset multiplot gnuplot >

ãã ï¼å®å
¨ã«ã°ã©ããéãããããã ãã§ãã®ã§ï¼ç¸¦è»¸ããããå ´åã¯ã°ã©ããæ±ããªã£ã¦ãã¾ãã¾ãã®ã§ï¼rangeãã»ãããã¦ããå¿
è¦ãããã¾ãï¼
ãããCGnuplotãç¨ããã¨æ¬¡ã®ããã«æ¸ãã¾ãï¼ã³ã¼ãã¯æ°å¤è¨ç®ãåæã«ï¼vectorã«ä»£å
¥ãããã®ãç¨ãã¦ãã¾ãï¼makeVectorã¨setVectorã¯id:hecomi:20100712:1278892595ã«æ¸ãã¦ããã¾ãï¼
vector<double> x, y1, y2; // -1ã1ã100çåãããã¯ãã«ã使 makeVector(x, -1.0, 1.0, 100); // boost::lambdaãç¨ãã¦ï¼x^2ã¨x^3ã®ãã¯ãã«ã使 setVector(y1, x, _1*_1); setVector(y2, x, _1*_1*_1); // CGnuplotã«ãããã«ããããã CGnuplot gp; gp.SetMultiplot(); gp.SetXRange(-1.0, 1.0); gp.SetYRange(-1.0, 1.0); gp.Plot(x, y1); gp.Plot(x, y2); gp.SetMultiplot(false);

ã¨ãªãã¾ãï¼ãã ãå¡ä¾ã«ä»ãã¦ã¯éãªã£ã¦æ±ããªã£ã¦ãã¾ãããï¼æ©è½ã«è¿½å ãã¦ããã¾ããï¼å¡ä¾ãä»ãããå ´åã¯ï¼æ¬¡ã®Multiplotã¡ã³ã颿°ã使ç¨ãã¦ãã ããï¼ç°¡åã«ãããããããå ´åã¯setMultiplotãå©ç¨ãããã¨ããå§ããã¾ãï¼
plot A, B, C...
ï¼ã¤ç®ã¯ï¼plotãã«ã³ãåºåãã§å©ç¨ããæ¹æ³ã§ãï¼ãã¡ãã§ã¯ã¿ã¤ãã«ãéããã«è¡¨ç¤ºã§ãããã¨ããï¼å¡ä¾ã表示ãããå ´åã«ããããã§ãï¼
gnuplot > set xrange[-1:1] gnuplot > set yrange[-1:1] gnuplot > plot x*x ti "y = x^2", x*x*x ti "y = x^3"
ãããC++ã§æ¸ãã¨æ¬¡ã®ããã«ãªãã¾ãï¼ã¡ãã£ã¨æéããããã¾ãï¼
vector<double> x, y1, y2; // -1ã1ã100çåãããã¯ãã«ã使 makeVector(x, -1.0, 1.0, 100); // boost::lambdaãç¨ãã¦ï¼x^2ã¨x^3ã®ãã¯ãã«ã使 setVector(y1, x, _1*_1); setVector(y2, x, _1*_1*_1); // std::pairã«first: å¡ä¾å, second: vectorã§å ¥ãã pair<string, vector<double> > pair1("y = x^2", y1), pair2("y = x^3", y2); // std::vector<std::pair>ã«æ ¼ç´ vector<pair<string, vector<double> > > plotData; plotData.push_back(pair1); plotData.push_back(pair2); // CGnuplotã«ãããã«ããããã CGnuplot gp; gp.SetXRange(-1.0, 1.0); gp.SetYRange(-1.0, 1.0); gp.Command("set key right bottom"); gp.Multiplot(x, plot Data);

ã¨ãªãã¾ãï¼ãã£ã¨è¯ãããããæ¹æ³ç¡ãã§ãããâ¦ï¼ã¡ãã£ã¨pairã®å
¥ã£ãvectorãæ°æã¡æªãã®ã§â¦ï¼
ã¡ãªã¿ã«PNG/EPSåºåã以ä¸ã®ããã«ããã°å¯è½ã§ãï¼
// ã¨ããããã©ãã«ãã¤ãã¦ãã gp.SetLabel("x", "y"); // EPSåºå gp.DumpToEps("plotData"); // gp.DumpToPng("plotData"); // PNGåºå
è£è¶³ï¼åæåãã¡ã¤ã«
ã³ã³ã¹ãã©ã¯ã¿ã§ãmacro\initial.txtãï¼EPSåºåæã«ãmacro\output_line.txtããèªã¿è¾¼ãããã«ãã¦ãã¾ãï¼ããã¯æ¬¡ã®ãããªãã¡ã¤ã«ãèªã¿è¾¼ãã§ãã¾ãï¼
initial.txt
set style line 1 linetype 1 linewidth 2 set style line 2 linetype 2 linewidth 2 set style line 3 linetype 3 linewidth 2 set style line 4 linetype 4 linewidth 2 set style line 5 linetype 5 linewidth 2 set style line 6 linetype 6 linewidth 2 set style line 7 linetype 7 linewidth 2 set style line 8 linetype 8 linewidth 2 set style line 9 linetype 9 linewidth 2 set style line 10 linetype 10 linewidth 2
output_line.txt
set style line 1 linetype 1 linewidth 6 set style line 2 linetype 2 linewidth 6 set style line 3 linetype 3 linewidth 6 set style line 4 linetype 4 linewidth 6 set style line 5 linetype 5 linewidth 6 set style line 6 linetype 6 linewidth 6 set style line 7 linetype 7 linewidth 6 set style line 8 linetype 8 linewidth 6 set style line 9 linetype 9 linewidth 6 set style line 10 linetype 10 linewidth 6
æå¾ã«
èå³ãåãããï¼ä½¿ã£ã¦é ããã¨å¬ããã§ãï¼ãã£ã¼ãããã¯ãé ããã°å¹¸ãã§ãï¼
ããã¥ã¢ã«ã«ã¤ãã¦ã¯Doxygenãéãã°çæãããã¨æãã¾ãã®ã§ï¼ã¡ã³ãä¸è¦§ãè¦ããæ¹ã¯ã¤ã³ã¹ãã¼ã«ãã¦ããã¥ã¢ã«ãçæãã¦ã¿ã¦ãã ããï¼
è¿½è¨ 10/07/16
ããã ã¨ï¼x軸ã®ãã¯ãã«ãåãã§ãªãå ´åã®ãããããåºæ¥ãªãã§ããï¼
æ°ããªãã¦ã³ãã¼ãå
ã¯ä»¥ä¸ã«ãªãã¾ãï¼
gnuplot.h : http://codepad.org/TrefNHjy
