¦a¹Ï/²Î­p¹Ï/3d ¨ç¼Æ¹Ï/¹êÅç³ø§i¹Ï -- Gnuplot ¯Âµe¹Ï


* * * ¤]½Ð°Ñ¦Ò ±Ð¾Çµu¤ù * * *

²¤¶

GNUPLOT ¥i¥H¶×¤J¦UºØ¤å¦r®y¼ÐÀÉ, ¤]¥i¥H¶×¥X¦UºØ¹ÏÀÉ ¬O¤@®M¸ó¥­»Oªº¼Æ¾Çø¹Ï¦Û¥Ñ³nÅé, ¥i¥Hø»s¼Æ¾Ç¨ç¼Æ¹Ï§Î, ¤]¥i¥H±q¯Â¤å¦rÀÉŪ¤J¤j¶q¼Æ¾Ú (¨Ò¦p®y¼Ð¸ê®Æ), ø»s²Î­p¹Ïªíµ¥µ¥¡C ¥¦¤£¬O²Î­p³nÅé, ¤]¤£¬O¼Æ¾Ç³nÅé, ¥¦¯Âºé¥u¬O¤@®M¨ç¼Æ/¸ê®ÆÃ¸¹Ï³nÅé¡C ¥¦¥u±M¤ß°µ¤@¥ó¨Æ - µe¹Ï - ¦ý¬O§â³o¥ó¨Æ°µ±o«D±`§¹¾ã¡C ³Ì­«­nªº¬O, ¥¦»P¨ä¥L³nÅé«O«ù¨}¦nªº·¾³q: ¥i¥H²£¥Í png, svg, ps, hpgl, ... µ¥µ¥¶}©ñªº¹Ï§ÎÀɮ׮榡ªº¿é¥X, ¨Ñ¤å®Ñ³B²z/²³ø/¸Õºâªí/... µ¥µ¥³nÅé¶×¤J¡C ¦pªG¦A¾Ç¤@ÂI regular expression, §ó¥i¥H±N¥ô¦ó¦³³W«ßªº¤å¦r®y¼ÐÀÉÂà´«¦¨ gnuplot »{±oªºÂ²³æ®æ¦¡, º¡¨¬§A¥ô¦ó¸ê®ÆÃ¸¹Ïªº»Ý¨D¡C ³oºØ ¡u²Õ¦X¦¡¾Ç²ß¡v ªº³]­p, ¦b¥[¤W¥¦¾ú¤[¤£°Iªº¯S©Ê, ¨Ï¥¦¨ã¦³ ªø»·¾Ç²ß§ë¸ê»ù­È, ¤j¤O±ÀÂ˵¹©Ò¦³²z¤u¬ì¨tªº¦P¾Ç, ¤Î¨ä¥L¥ô¦ó¬ì¨t»Ý­n°µ²Î­pø¹Ïªº¦P¾Ç¡C

Windows ¥Î¤á, ¤U¸ü ®É½Ðª`·N: ¦pªG±zªº¨t²Î¤w¦³ cygwin ©Î XLiveCD, «h¤U¸ü gp400win32x11.zip ; ¤@¯ë¤HÀ³¸Ó¨S¦³ cygwin/XLiveCD, ¦]¦¹À³¤U¸ü gp400win32.zip¡C

¥t¥~, §ÚÁÙÀ°¥¦¼g¤F¤@­Ó GUI ±±¨î«eºÝ dynagpt-0.4, «D±`¾A¦X°ê¤¤¨ì¤j¾Çµ{«×ªº¸ÑªR´X¦ó±Ð¾Ç, ¥i±¤ÁÙ¨S¦³®É¶¡¼g¤â¥U¡C

²{¦b´NÅý§Ú­Ìª½±µ¦b©R¥O¦C¥´ gnuplot ¶i¤J¥¦ªº©R¥O¦CÀô¹Ò¡C

plot x*x-4*x+3 # µe¤@±ø©ßª«½u¡C ª`·N¥¦ªº¹ïºÙ¶b¦b x=2¡C
a=-1; b=-2; c=3 # ³]©w¤@¨ÇÅܼơC
plot a*x*x+b*x+c # µe¤@±ø¶}¤f¦V¤Uªº©ßª«½u¡C ª`·N¥¦ªº¹ïºÙ¶b¦b x=-1¡C
b=6; replot # ²Ä¤T±ø©ßª«½u¡C ¥¦ªº¹ïºÙ¶b«h¬O¦b x=3¡C
show xzeroaxis # ¥Ø«eªº³]©w, ¨Ã¤£·|Åã¥Ü x ¶b¡C
set xzeroaxis # ¨º»ò±N³o­Ó³]©w¥´¶}§a¡C
replot # ­«µe¤@¦¸, ¥i¥H¬Ý¨ì¥¦»P x ¶b¦³¨â­Ó¥æÂI¡C

¦pªG§A¤U¥H¤Wµe¹Ïªº©R¥O, «o¦³¿ù»~°T®§: use 'set term' to set terminal type first ¨º»òÀ³¥ý³]©wø¹Ï¼Ò¦¡¡C ¦b X-Window ¤U¥i¥H³]©w: set term x11 ¦Ó¦b MS Windows ¤U¥i¥H³]©w: set term windows ¦pªG«ç»ò¸Õ³£¥¢±Ñ, ¦Ü¤Ö¥i¥H¤U: set term dumb ®³¤å¦r¼Ò¦¡¤Uªº¦r¤¸¨Óµe¹Ï, ÁöµM¦³ÂIÁà, ¦Ü¤Ö¥i¥H½m²ß. (¦pªG§A³z¹L pietty ³s¨ì Linux ¥D¾÷, ´N¥²¶·³o¼Ë³]¡C) ©ßª«½u -x*x+6*x+3

½Ð¦Û¤vµeµe¬Ý:

·íµM, ¾Ç¥ô¦ó¤@®M³nÅé, ³Ì¥ý­n¾Çªº´N¬O:

¥t¥~, ©R¥O¦Cªº§Ö³tÁä¤]«Ü­È±o¾Ç¡C gnuplot ¥Îªº¨Ã¤£¬O¯u¥¿ªº readline ¤¶­±, ¥u´£¨Ñ¨ä¤¤¤Ö¼Æ´X­Ó³Ì±`¥Î¥\¯à, ¦ý¤w¸g«Ü¤è«K¡C ¸Ô¨£ help line-editing¡C

¤H¤f¦¨ªø¥v

½Ð¥ý¸õ¥X gnuplot, ¦A­«·s¶i¨Ó¤@¦¸, ¥H½T©w©Ò¦³³]©wÁÙ­ì¡C (©Ò¦³ set ¦^´_¨ì default ­È) ³o¥÷¸ê®Æ popgrowth.txt °O¸üµÛ¬ü°ê¥[¦{»Pªü©Ô´µ¥[¦{ªº¤H¤f¦¨ªø¥v¡C

plot "popgrowth.txt" # ø»s¥[¦{¤H¤f¦¨ªø¥v¡C
show style data # ¦pªG§A¥Îªºª©¥»¤ñ¸ûÂÂ, ½Ð¤U set data style
set style data lines # ³]©w¦¨³s½u¼Ò¦¡¡C
set grid # ¼ÒÀÀ¤è®æ¯È®ÄªG¡C
set title "population growth" # ¥[¤W¼ÐÃD¡C
replot # ­«µe¤@¹M, ¦n¦h¤F¡C
plot "popgrowth.txt" using 1:3 # §ïø»sªü©Ô´µ¥[¦{¤H¤f¦¨ªø¥v¡C
show ytics # ¬Ý¬Ý y ¶b¼Ð¥Ü¡C
set ytics 100000 # ±N y ¶b¼Ð¥Ü§ï³]©w¦¨¨C 10 ¸U¤@®æ¡C
show ytics # ¦A¬Ý¤@¦¸ y ¶b¼Ð¥Ü¡C (¥H¤U¤£¦AÅo¶Û)
replot # ­«µe¤@¹M¡C
plot "popgrowth.txt" # ¦^ÀY¬Ý¥[¦{¤H¤f¦¨ªø¥v... «ç»ò·|³o¼Ë?
set ytics autofreq # ÁÙ¬OÅý¥¦¦Û°Ê³] y ¶b¼Ð¥Ü§a¡C
plot "popgrowth.txt" using 1:2,
"popgrowth.txt" using 1:3
# ¦P®Éµe¨â¹Ï (½Ð¥´¦b¦P¤@¦C)
set logscale y; replot # ¹³³oºØ±¡ªp, ¥Î logscale µe¹Ï³Ì¦X¾A¤F
set output "growth.png" ; set term png ; replot
set output ; set term x11 ; replot

¬ü°ê¥[¦{»Pªü©Ô´µ¥[¦{ªº¤H¤f¦¨ªø¥v «Ü¦h³]©w¥i¥H¥Î set ©R¥O§ó§ï¡C «ØÄ³¥Î¹ïÀ³ªº show ©R¥O¬d¬Ý¤@¤U§ó§ï«e«áªº³]©w¡C ³o¸Ìªº set term ... ¥Î¨Ó¿ï¨ú¤£¦Pªº¿é¥X¤è¦¡ (¿Ã¹õ©Î¹ÏÀÉ? ¨º¤@ºØ¹ÏÀÉ?) set output ... «h¿ï¨ú¿é¥XªºÀɮצWºÙ¡C ­Ë¼Æ²Ä¤G¦Cªº¨º¤T¥y¥Î¨Ó±N¹Ï¦sÀÉ; ³Ì«á¤@¦Cªº¨º¤T¥y±N¿é¥X¤Á¦^¿Ã¹õ, ¥H§Kµ¥¤@¤U©Òµeªº¹Ï¥þ³¡³£¶]¿ù¦a¤è, Âл\±¼¥ý«eµe¦nªº¹ÏÀÉ¡C

¤S, ³o­Ó¨Ò¤l»¡©ú¤F: ¦pªG¼Æ¾Ú¸ê®Æ¸Ì­±§t¦³¼Æ¶q¯Å¬Û®t·¥¤jªº­È (¨Ò¦pÂÅÄH, ¤H, ¦Ñ¹«ªº¨­ªøÅé­«) ¥i¥H¥Î logscale ªº³]©w¨Ó´£°ª¹Ïªº¥iŪ©Ê¡C

¥ßÅé¹Ï§Î

¥Î splot µeªÅ¶¡¦±­±¡C ¥i¥H¥Î·Æ¹«§ìµÛ¹Ï§Î±ÛÂà, ¸Ô²Ó¬ã¨s¥¦ªºªø¬Û, ³o¤ñ¦Ñ®v¦b¶ÂªO¤Wµe¹Ï­n¦nª±¦Ó¥B¦³·Pı¦h¤F! ¹³¬O³o­Ó°¨¾b­±: splot x*x-y*y ¦A¥[¤Wµ¥°ª½u, ¥¿¦n¥i¥H¤W¤@ÂI°ê¤¤¦a²z/¦a¬ì: [°¨¾b­±ªºµ¥°ª½u] ¹Ï®×

        reset   # ²M°£¤§«e©Ò¦³ªº³]©w
        set contour base
        set cntrparam levels 20
        unset key
        unset ztics
        splot x*x-y*y

³o¸Ìªº reset ®ÄªG¹³¬O¸õ¥X gnuplot ¦A¶i¨Ó, §â¤§«eªº (µ´¤j³¡¤À) set ³]©w§ï¦^¤º©w­È¡C

¦pªG§Æ±æ±Nµ¥°ª½uµe¦b¦±­±¥»¨Ó¦bªÅ¶¡¤¤ªº¦ì¸m¤W, ¥i¥H¥Î: set contour surface ¨ú¥N set contour base; ¦pªG¥u·Q±q¥¿¤W¤è¬Ýµ¥°ª½u, ¤£·Q¬Ý­ì©lªº¦±­±, «h»Ý­n¸É¨â¥y: unset surface; set view 0,0 ©Î°®¯Ü¤£­ã±ÛÂà: set view map

[°¨¾b­±®Ú¾Ú°ª«×µÛ¦â] ¹Ï®× ¥t¤@ºØ§e²{¥ßÅé¹Ï§Îªº¤è¦¡¬O: ®Ú¾Ú¦±­±¤W¨C¤@¤p¶ô¤T¨¤§Î¤£¦Pªº z ­È (¤£¦Pªº°ª«×), ¬°¥¦¶î¤W¤£¦PªºÃC¦â¡C ¨Ò¦p:

        reset
        set isosamples 40
        set pm3d
        set palette model HSV functions gray,1,1
        unset ztics
        splot x*x-y*y

·íµM, ¥¦¤£¥u¥i¥Hµe 3-d ¨ç¼Æ, ¤]¥i¥Hµe 3-d ¸ê®Æ¡C ¬ü°ê¤ÓªÅÁ`¸p JPL ¹êÅç«Çªº Shuttle Radar Topography Mission ´£¨Ñ¥þ²yªº¦a­±°ª«×¸ê°T¡C §Ú¤U¸ü¥_½n 23 «×ªF¸g 121 «×ªþªñªº¸ê°T, ¨Ã¼g¤F¤@­Ó¤pµ{¦¡ hgt2txt ±N¤§Âà´«¦¨ gnuplot »{±oªº¯Â¤å¦r®æ¦¡, ¦s¦¨ÀÉ®× taiwan.txt:

        ./hgt2txt -s 100 > taiwan.txt

µM«á¶i¤J gnuplot µe¹Ï:

        reset
        splot "taiwan.txt"              # ³s½u·|¤ñ¸û²M·¡
        set style data lines; replot    # ¤ñ¨Ò©Ç©Çªº, ½Õ¤@¤U...
        set xrange [0:60]
        set zrange [0:1e4]; replot
        set pm3d; replot                # µÛ¦â¡C
        set palette model HSV functions gray, 1, 1
        replot                          # ´«­Ó½Õ¦â½L¬Ý¬Ý
        set palette model HSV functions gray>0.01?gray*0.9:0, gray>0.01?1:0, 1
        replot                          # ®ü­±µe¥Õ¦â; ³°¦a¥Ñ¬õ¨ìµµ
        set view map; replot            # ¦pªG§ïµe¥­­±¹Ï©O?
        set palette model XYZ functions gray**0.35, gray**0.5, gray**0.8
        splot "taiwan.txt" lt 3         # ¥t¥~¤@­Ó¥Ñ¶Â¨ìª÷ªº½Õ¦â½L

³Ì«á¤@­Ó ¡u¶Âª÷½Õ¦â½L¡v (¨þ¨þ ¸ò»OÆWªº¬FªvµLÃö, ½Ð¤£­n·Q¤Ó¦h) ¨Ó¦Û ³o¥÷Á¿¸q (¦b¥»­¶·j´M "gold palette")

»OÆW 3d ¦a§Î¹Ï »OÆW 2d ¦a§Î¹Ï

ª`·N¨ì¸ê®ÆÀÉ taiwan.txt ªº®æ¦¡:

Regexp »P¸ê®ÆÃ¸¹Ï

¦pªG±z¹ï¸ê®ÆÃ¸¹Ï¦³¿³½ì, ³o¸Ì ÁÙ¦³§ó¦h¨Ò¤l; ¤£¹L»Ý­n¾Ç¤@ÂI regular expressions¡C ²¤¹L³o³¡¤À, ¹ï gnuplot ªº¾Ç²ßµL¬Æ¼vÅT; ¦ý regular expressions ¯uªº¶W¯Å¦³¥Î, ¤£§«¶¶«K¤@°_¾Ç¡C

¥Ü½d¶°ÀA: ¥H¥@¬É¦a¹Ï¬°¨Ò

Demo scripts for gnuplot ¦³«Ü¦h½d¨Ò¡C ¤]¥i¥H¤U¸ü¾ã®MªºÀ£ÁYÀÉ (ª©¥»¥i¯à¤£¦P©ó¤W­zºô­¶) demo.zip, ¸ÑÀ£ÁY«á, ¦b¸Ó¥Ø¿ý¤U¶i¤J gnuplot, ¤U«ü¥O: load "all.dem" ¡C ¦b­ì¥ý¤U«ü¥Oªº²×ºÝ¾÷µøµ¡ (¦Ó¤£¬Oø¹Ïµøµ¡) «ö Enter, ¥i¥H¤@¤f®ð³v¤@À˵ø©Ò¦³½d¨Ò¡C

§Ú­Ì´N®³¨ä¤¤ªº cylindrical/spherical coordinates ¬°¨Ò¨Ó¦h¾Ç¤@¨Ç¸ê®ÆÃ¸¹Ïªº«ü¥O¡C ¶}¥t¤@­Ó¤À­¶, ¥Î less À˵ø world.dat ªº¤º®e; ¤S¦b gnuplot ¤À­¶·í¤¤ reset; plot "world.dat" ... («ÝÄò)

¶×¥X svg ¥H»s§@º©µe/®ü³ø/´¡¹Ïµ¥µ¥

¦V¶qø¹Ï³nÅé Inkscape ¥i¥H¥Î¨Ó»s§@º©µe/®ü³ø/´¡¹Ïµ¥µ¥, ¦³ Linux ª©, Mac ª©, Windows ª©, ...¡C ¥¦©Ò²£¥Íªº svg ÀÉ, ¬O¤@ºØ¶}©ñªº xml ®æ¦¡, ¥B¥i¥H¥ô·NÁY©ñ¦Ó¤£¥¢¯u¡C §Ú±`®³¥¦¨Ó¬°§Úªº³¡¸¨®æ¤å³¹µe¤@¨Ç´¡¹Ï, ¨Ò¦p ¤Ïµsª©¤å«Åªº¥¿·í©Ê, ¤¤¶¡¿ï¥Áªº¤O¶q, ¤½§ëªº¼Æ¾Ç bug, ... µ¥µ¥¡C

gnuplot ªº¿é¥X¥i¤£¥i¥H®³¨Óµ¹ inkscape ¥Î©O? ³o¸Ì´N¬O¤@­Ó¨Ò¤l:

        unset key
        unset border
        unset xtics
        unset ytics
        unset mouse
        bell(x) = exp(-x*x)/sqrt(2*pi)
        f1(x) = (x > -1 && x < 1) ? bell(x) : 0
        plot [-3:3] bell(x) lt 1 with filledcurve, f1(x) lt 2 with filledcurve
        set output "normal.svg"; set term svg; replot
        set output; set term x11; replot

¶i inkscape, ¶×¤J normal.svg, ¿ï¨ú¹Ï§Î, ¨Ã¥Î Object ¿ï³æ©³¤Uªº ungroup ¥\¯à±N¸s²Õ©î¶}, ´N¥i±o¨ì±`ºA¤À§Gªº¦V¶q¹Ï¡C

¼Æ¾Ç¹Ï§Î

¥Î gnuplot µe¼Æ¾Ç¨ç¼Æ, ¨ä¹ê¤ñµe¸ê®ÆÀɧ󲳿¡C §Ú­Ì¬Ý¹L¦p¦ó³æ¯Â¦a¥Hª½¨¤®y¼Ðªí¥Üªkµe¹Ï, ¹³³o¼Ë: plot sin(x)/x; ¦ý gnuplot ÁÙ¥i¥Hµe·¥®y¼Ð¹Ï:

        set polar               # §ï¥H·¥®y¼Ðµe¹Ï
        plot 1+cos(t)           # ¤ßŦ½u
        plot sin(5*t)           # ¤­Ã¤ªá
        plot [0:6*pi] t         # ªü°ò¦Ì¼wÁ³½u
        unset polar             # ¤Á´«¦^ª½¨¤®y¼Ð
  

¦³¨Ç¹Ï§ÎÄY®æ»¡¨Ó¤£¬O¨ç¼Æ, ¦]¬°¤@­Ó x ¹ï¨ì¨â­Ó©Î¨â­Ó¥H¤Wªº y; ¦ý¤S¤£¤@©w¯à¥Î«Ü²³æªº·¥®y¼Ðªí¥Ü¡C ³o®É¥i¥H§ï¥Î³Ì¤@¯ëªº "°Ñ¼Æ¦¡" ªí¥Ü¡C ¥ý¥Î set parametric «ü©w¥H¤U¨Ï¥Î°Ñ¼Æ¦¡, ¥H«á´N¥i¥H¥Î t ·í°µ¦ÛÅܶq¡C ·íµM¥Î°Ñ¼Æ¦¡µe¹Ï®É, ´N¥²¶·µ¹ plot ¨â­Ó¼Æ­È, ¨Ò¦p plot [-3:3] t*t, t*t*t µe¥X¤@±ø¦³ cusp (¦³¦y¨¤) ªº¦±½u¡C ¤S¦p plot sin(t),sin(t)*cos(t) µe¤@±ø "8" ¦r½u¡C ²{¦b½Ð¥Î unset parametric ÁÙ­ì¡C

ÁÙ°O±o·L¿n¤À¸Ì­±ªº "¤G¦¸·¥­­" »P "¤G­«·¥­­" ¶Ü? ¥k¹Ï¬O¤@­Ó "¨â­Ó¤G¦¸·¥­­¦s¦b¦ý¤£¬Ûµ¥ªº¨Ò¤l, ©Ò¥H¤G­«·¥­­¤£¦s¦b, ¤]´N§ó¤£¥Î½Í¤G­«³sÄò¤F¡C (§ó¦h¨ç¼Æ¹ê¨Ò) [¤G¦¸·¥­­¦s¦b¦ý¤£¬Ûµ¥ªº¨Ò¤l] ¹Ï®×

        f(x,y) =(x*x-y*y)/(x*x+y*y)
        limx->0 limy->0 f(x,y) = 1
        limy->0 limx->0 f(x,y) = -1
        lim(x,y)->(0,0) f(x,y) = ?
    
        set hidden3d
        set isosamples 40
        splot [-1:1] [-1:1] (x*x-y*y)/(x*x+y*y)

³o¸Ìªº set hidden3d ¥Øªº¬O®ø°£Áô½u, ¤]´N¬O¤£­nµe¥X³Q¾B»\¦íªº³¡¤À, ¥H«K©ú½T¦a¤À¿ë¥X«e«á¡C µeªÅ¶¡¦±­±®É, ³o¼Ëªº³]©w¬Ý°_¨Ó¤ñ¸û¯u¹ê, ¦ý¬O­pºâ¶q¤]µy·L¤j¤@¨Ç¡C ¦Ü©ó set isosamples 40 «h¬O­n gnuplot ¦b x ¤è¦V»P y ¤è¦V¦Uµe 40 ±ø¦±½u¡C ¤@¯ë»¡¨Ó, ½u±ø¶V±K¶°, ¹Ï§Î´N¶Vº}«G, ¦ý¬O­pºâ¶q¤]¶V¤j¡C ¦pªG·íªì¾Ç·L¿n¤Àªº®É­Ô, ª¾¹D¦³ gnuplot ¥i¥Hª±, ´N·|§ó©ú¥Õ¤G¦¸·¥­­»P¤G­«·¥­­ªº®t§O¤F!

µeªÅ¶¡¦±­±®É, ¤@¼Ë¥i¥H¥Î°Ñ¼Æ¦¡; ¦¹®É¥Î u, v ·í°µ¦ÛÅܶq¡C ¨Ò¦p: [±q¤¤¶¡³QÕt¦íªº¯È] ¹Ï®×

        set parametric
        set hidden3d
        splot v*v, -u, v*(u*u+1)

splot ¦³¤ä´©¥Î²y­±§¤¼Ð»P¬W­±§¤¼Ðµe¥~³¡¼Æ¾Ú¸ê®Æ, ¦ý¨Ã¨S¦³ª½±µ¤ä´©²y­±§¤¼Ð»P¬W­±§¤¼Ðµe¨ç¼Æ¡C ¨SÃö«Y, °Ñ¼Æ¦¡¤ñ³o¨Ç®y¼Ð§ó¤@¯ë, ©Ò¥H¤@¼Ë¥i¥Hµe¥X¨Ó, ¨Ò¦p hyperboloid of one sheet ¤Î torus ("²¢²¢°é"):

        set isosamples 30, 10
        splot [-pi:pi] [-2:2] sqrt(1+v*v)*cos(u), sqrt(1+v*v)*sin(u), v
        set isosamples 50, 30
        splot [-pi:pi] [-pi:pi] cos(u)*(5+cos(v)), sin(u)*(5+cos(v)), sin(v)
    

¦Û­q¨ç¼Æ

¨Ï¥ÎªÌ¥i¥H¦Û¤v©w¸q¨ç¼Æ¡C ¨Ò¦p°T¸¹³B²z·í¤¤¸g±`¥X²{ªº sinc ¨ç¼Æ ¥i¥H³o¼Ë©w¸q: sinc(x) = sin(x)/(x) ¤§«á¦pªG­nµe¥¦ªº¥ßÅ骩´N¤ñ¸û²³æ¤F: splot sinc(sqrt(x*x+y*y)) [sinc ¨ç¼Æ, ¥ßÅ骩] ¹Ï®×

¥i¥H¥Î show functions ¤Î show variables ¬d¸ß¥ý«e©w¸qªº¨ç¼Æ¤ÎÅܼơC

Fitting

¨ä¹ê gnuplot ¤£¥u¥i¥Hø¹Ï, ¤]¥i¥H°µ¤@ÂI¼Æ­È¹Bºâ¡C Fitting ªº¥\¯à«Ü¦n¥Î, fit §¹¦¨¤§«á, §â¦¨ªG¨ç¼Æ©M­ì©l¸ê®Æµe¦b¤@°_, ¥i¥H«Ü²M·¡¦a¬Ý¨ì¤âÃ䪺¸ê®Æ»P¤ß¤¤ªº¼Ò«¬»P¬O§_§k¦X¡C

¥ý¬Ý¤@­Ó²³æªº¨Ò¤l¡C ­º¥ý¶i¤J octave ¥Î¶Ã¼Æ²£¥Í¤@¨Ç¸ê®Æ:

        x=[-10:10]/8*pi; x=x'
        y=3.2*sin(0.7*x+0.4)+1.4*x-2.3+(rand(21,1)-0.5)*0.7
        z = [x,y]
        save -text fit-ex1.txt z     # ¦sÀÉ

¦A¶i¤J gnuplot, ¥Î¤@­Ó¤T¦¸¦¡¥hªñ¦ü:

        f(x) = a*x*x*x + b*x*x + c*x + d        # ©w¸q¨ç¼Æ (§t«Ý¦ô°Ñ¼Æ)
        a=-1; b=1; c=10; d=0                    # ³]©w°Ñ¼Æªºªì©l²q´ú­È
        fit f(x) "fit-ex1.txt" via a,b,c,d      # fit
        plot "fit-ex1.txt", f(x)                # µe¥X, ¹ï·Ó¤ñ¸û

¤£¹L³oÃD¥¿¦n¤]¥i¥H¥Î³Ì¤p¤è®t (least square) ªº¤è¦¡¨Ó¸Ñ¡C ¦^¨ì octave «Ü®e©ö´N¥i¥HÅçºâµª®×:

        load "fit-ex1.txt"
        x = z(:,1)
        y = z(:,2)
        A = [x.*x.*x,x.*x,x,x-x+1]
        (A'*A)\(A'*y)

¤@¨Ç¦³¥Îªº¸gÅç¤À¨É

  1. ­Y§Æ±æµe¥Xªº¤å¦r¦³¤W¤U¼Ð¤p¦rªº®ÄªG, ¦b X Window ¤U¥i¥Î set term x11 enh, µM«á¥Î³o¼Ëªº»yªk set xlabel '{/Symbol D}_x (m)' §Y¥i¹F¦¨¡C ½Ð°Ñ¦Ò GNUPLOT 4.0 - A Brief Manual and Tutorial ¨Ã¦b­¶­±¤º·j´M Greek¡C ·PÁ ¤p©ú´£¨Ñ!

¥H¤U¬OªºÁ¿¸q©|¥¼¾ã¦X¶i¨Óªº³¡¤À


­×¹¢¹Ï®×: set »P show ªº±`¥Î¿ï¶µ

  1. ¶i¤J gnuplot «á½Ð¥ýµe¦n¤@­Ó¹Ï, ¨Ò¦p plot sin(x)/x ¥H¤UºK­n»¡©ú¤¤, (un)set xzeroaxis ªí¥Ü§A¥i¥H¤U set noxzeroaxis; replot ¬Ý¬Ý¤£­nµe x ¶bªº®ÄªG, ©Î¤U unset xzeroaxis; replot ¬Ý¬Ý­nµe x ¶bªº®ÄªG. ¦³¨Ç¿ï¶µ (¨Ò¦p arrow) ¤ñ "­n/¤£­n" ÁÙ­n½ÆÂø, ¥²¶·¬Ý¤â¥U (¨Ò¦p help set arrow) ¬d¬Ý¸Ô²Óªº¥Îªk.
  2. ­nÀˬd¥Ø«eªº³]©w, ¥i¥H¥Î show ©R¥O. ¨Ò¦p show xzeroaxis ¥i¥H¬d¸ß¦b¥Ø«eªº³]©w¤U, x ¶b·|¤£·|µe¥X¨Ó; ¥Î show xrange ¥i¥H¬d¸ß¥Ø«e x ¶b¤è¦Vªº¼Æ­È½d³ò.
  3. set xrange ...: ³]©w x ¶b¤è¦Vªº¼Æ­È½d³ò. y ¶b»P z ¶bÃþ¦ü. (¦³¨Ç©R¥O¥u¹ï x »P y ¦³®Ä, ¦³¨Ç¹ï z ¤]¦³®Ä; ¥H¤U³£¥u¥H x ¶b¬°¨Ò.)
  4. set title ...: ³o±i¹Ïªº¼ÐÃD.
  5. (un)set autoscale x: (¤£)­nÅý gnuplot ¦Û¤v±ÀºV x ¶b¤è¦Vªº¼Æ­È½d³ò (range)
  6. (un)set xzeroaxis: (¤£)­nµe x ¶b.
  7. (un)set border: (¤£)­nµe¥~®Ø.
  8. (un)set xtics ...: (¤£)­nµe x ¶b¤Wªº¨è«×. ¨è«×¤§¶¡ªº¶ZÂ÷¥i¥H½Õ¾ã, ¬Æ¦Ü¥i¥H¤£¬O±`¼Æ; ¨è«×®Çªº¤å¦r¥i¥H¦Û¦æ«ü©w. ±ý³æ¿W±±¨î¨è«×®Çªº¤å¦r (®ø°£©Î§ïÅܦC¦L®æ¦¡) ¨£ help set format. ¤S, ¦p­n¥H¤ë¥÷°µ¬°¨è«×®Çªº¤å¦r, ¥i¥H¥Î xmtics ¿ï¶µ.
  9. set function style ...: ¥Î¦UºØ¤£¦Pªº¤è¦¡¨Óµe¨ç¼Æ. «ØÄ³¥Î impulses ¸Õ¤@¤U, ¥i¥Hµe¥Xª«²z½Ò¥»¤W±`¥X²{ªº¹Ï¦¡; ¥Î boxes ¸Õ¤@¤U, ¥i¥Hµe¥X²Î­p½Ò¥»¤W±`¥X²{ªº¹Ï¦¡.
  10. set samples ...: ¨C¤@±ø¦±½u­n¥Ñ¦h¤Ö­ÓÂI¨Óªñ¦ü (¨ú¼ËÂI¼Æ).
  11. (un)set grid: (¤£)­n¦b­I´º¤Wµe¤è®æ¯È.
  12. (un)set key ...: (¤£)­n¦b¥k¤W¨¤Åã¥Ü¹Ï¨Ò (¦]¬°¤@±i¹Ï¤W¥i¥H¦³¦n´X­Ó¨ç¼Æ) ¥t¥~ keytitle ¥i³]©w¹Ï¨Òªº¼ÐÃD.
  13. set label ...: ¨ì³B¶Ã¼g¤å¦r.
  14. set arrow ...: ¨ì³B¶Ãµe½bÀY.
  15. (un)set logscale ...: ¥H¹ï¼Æ¤ñ¨ÒÅã¥Ü.
  1. Gnuplot «D±`­«­nªº¥Î³~¤§¤@¬O¸ê®Æ¤ÀªR: §â·j¶°¦Ó¨Ó©Î¨ä¥Lµ{¦¡©Ò²£¥Íªº¼Æ¾Ú¸ê®Æ®³¨Óµe. ¥¦»Ý­nªº¿é¤J®æ¦¡«D±`²³æ: ¯Â¤å¦rÀÉ; ¨C¦C¥Nªí¤@­ÓÂIªº§¤¼Ð; # ¶}ÀYªº·í°µµù¸Ñ©¿²¤; ¦pªG¨C¦C¦³¨â­Ó¼Æ¦r«h¥Nªí x »P y §¤¼Ð; ¦pªG¨C¦C¥u¦³¤@­Ó¼Æ¦r«h¥Nªí y §¤¼Ð (x §¤¼Ð¦Û°Ê«ü©w¬° 1, 2, 3, ...). ¨Ò¦p§Ú­Ì¥i¥H«Ø¥ß¤@­Ó¼Æ¾Ú¸ê®ÆÀÉ¥s°µ apache.dat µM«á¤U plot "apache.dat"
  2. »P set function style ¬Û¹ïÀ³ªº, ¦³¤@­Ó set style data ¥i¥H¥Î¦UºØ¤£¦Pªº¤è¦¡¨Óµe¥~³¡¼Æ¾Ú¸ê®Æ.
  3. ¦pªG data style ³]©w¦¨ lines ©Î linespoints, «h¸ê®ÆÂI¤§¶¡·|¦³½u±N¥¦­Ì³s°_¨Ó. ¦ý­Y¼Æ¾Ú¸ê®ÆÀɤº¦³ªÅ¦C, «hªÅ¦C«e«áªº¨âÂI¤§¶¡¤£·|¦³³s½u. ½d¨Ò
  4. ¨Ï¥ÎªÌ¥i¥H¦Û¦æ©w¸q¨ç¼Æ (¨£ help user-defined)
  5. ±`¥Î³]©w¥i¥H©ñ¦b ~/.gnuplot Àɤº, ¨C¦¸¶i¤J gnuplot ®É, ·|¦Û°Ê°õ¦æ. ¨Æ¹ê¤W¤]¥i¥H§â¬ÛÃöªº gnuplot ©R¥O»P¦Û¦æ©w¸qªº¨ç¼Æ¼g¦b¯Â¤å¦rÀɤº, ¦s¦¨¥ô¦óÀɦW, ¥u­n¥Î load ©R¥O´N¥i¥H¸ü¶i¨Ó.
  6. ³sÄòµe¦n´X­Ó¹Ï®É, ¥i¥Î pause ¼È°±, Åý¬Ýªº¤H¸ò±o¤W.

°Ñ¦Ò¸ê®Æ

  1. ¤¤¬ã°|: GNUPLOT ¾ÉŪ
  2. ¥Î¦Û¥Ñªº¤u¨ã¾Ç²ß­pºâª«²z (¤å¤Æ¤j¾Çª«²z¨t¹Q©¾¼Ý¦Ñ®v)

»ÊÁÂ

¥»¤å¥ó±µ¨ü¥H¤U­pµe¸É§U: