gnuplot 초보 (원라이너 중심) #2

3656 단어 commandgnuplot
#1/#2/#3

전제


  • 5.2 시스템 확인 (-c 또는 사용)
  • –persist(-p) 옵션을 사용합니다.

  • -p 는 OS X 라면 그 나름대로 설정하지 않으면 사용할 수 없습니다.
    -p가 설정되어 있지 않은 환경에서는 ~/.gnuplot 파일을 설정하고, 바꾸고 나서 읽으면 좋을지도( #1 의 마지막으로 접하고 있습니다).

    그리기 관계



    다중 파일 플롯


    $ gnuplot -p -c <( echo 'plot for [ i = 1:ARGC ] ARGV[i] w l ; ' ) rand.txt rand2.txt
    

    rand.txt/rand2.txt 는 이전 녀석 과 동일



    다중 열 플롯



    행을 동적으로 변경시켜 플롯시킬 수도 있습니다.
    $ perl -le 'print join " ", $_,  rand (10), rand(10) for 0 .. 99' > randml.txt 
    $ gnuplot -p -c <( echo 'plot for [ i = 1:2 ] ARG1 u 1:(column(i+1)) w l ; ' ) randml.txt
    

    솔직하게, column 함수를 사용하는, perl 의 소프트 레퍼런스적인 방식으로, u 1:($$i) 같은 일을 할 수 없는지 찾아 빠졌다.



    시간축 사용



    ISO 8601



    축을 ISO 8601 형식으로도 할 수 있어요.

    Backslash-octals(\nnn) are converted to char

    T는\124로 지정해야 한다.
    set xdata time                     
    set timefmt "%Y-%m-%d\124%H:%M:%S"  
    

    여기조차 조심하면, range 지정시라든가는, 보통으로 T 를 매입하면 된다(format x 의 때도).

    그래서 밀리 세컨드를 지정하는 방법은

    Gnuplot tracks time to millisecond precision. Time formats have been modified to match this.

    그렇다고, %.3S라든지로 지정한다.
    $ cat .gnuplot
    set xdata time                     
    set timefmt "%Y-%m-%d\124%H:%M:%S" 
    set format x "%H:%M:%.3S"         
    set xtics rotate by 90  right      
    
    $ perl -le 'printf "2019-03-08T00:00:00.%02d %s\n",  $_ ,rand (10) for 0 .. 99' > randwt.txt
    $ gnuplot -p -c <( echo 'load ".gnuplot"; plot ARG1 u 1:2 w l' ) randwt.txt
    



    상당히 몰랐다.

    시간축에서 STATS



    시간축의 stats은, 불쾌한 결과가 나오기 때문에 묵살한다. 시간 축이 아닌 축 stats는 신용할 수 있다 1 .
    $ gnuplot -p -c <( echo 'stats ARG1 nooutput; print STATS_index_min_y, STATS_min_y' ) randwt.txt
    6 0.00668365412220595
    

    Y축의 값에서 X축의 값을 역 빼는 것은 STATS_index_* 로 인덱스를 얻을 수 있으므로 그것을 사용한다.
    $ perl -lne 'print if $. == 7' randwt.txt
    2019-03-08T00:00:00.06 0.00668365412220595
    

    뭐, 랩퍼 안에서의 작업이 되지만.



    먼저 시간축의 포맷 지정 등을 하면, stats 커멘드 자체 실행할 수 없다.

    좋은 웹페이지 즐겨찾기