亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1836 | 回復(fù): 0
打印 上一主題 下一主題

Gnuplot 小試 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-05-07 19:27 |只看該作者 |倒序?yàn)g覽
幾天前,我寫了個(gè)抓取此博客總訪問(wèn)量(見左下角)信息的腳本,并把它扔到了 crontab 中,每隔20min執(zhí)行一次。日志格式如下:
2009-05-03 01:50 1620
2009-05-03 02:10 1620
2009-05-03 02:30 1621
2009-05-03 02:50 1622
2009-05-03 03:10 1624
雖然人類也可以輕易看懂,不過(guò)成百上千行的日志,看起來(lái)太累了,也太不直觀了。所以急需畫張圖來(lái)分析一下。想到了傳說(shuō)中牛氣沖天,無(wú)比強(qiáng)大的 gnuplot ,正好可以趁這個(gè)機(jī)會(huì)學(xué)一學(xué)。
讀了下面兩個(gè)網(wǎng)站的文檔,就差不多入門了。
  • http://dsec.pku.edu.cn/dsectest/dsec_cn/gnuplot/index.html
  • http://darksair.org/wiki/Gnuplot.html好,可以開始處理我的日志了。
    首先,由于 gnuplot 不能直接識(shí)別這種格式的時(shí)間,我把它轉(zhuǎn)化為自 2009-05-03 00:00 所流逝的分鐘數(shù)。 Perl 代碼如下:
    #!/usr/bin/perl
    use strict;
    my %visit;
    open LOG, "/home/sapiens/log/cublog.txt" or die "Can't open cublog.txt: $!";
    while(LOG>) {
        chomp;
        if (/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}) (\d+)$/) {
            my $time = ($1-2009)*365*24*60 + ($2-5)*30*24*60 + ($3-3)*24*60 + $4*60 + $5;
            $visit{$time} = $6;
        }
    }
    close LOG;
    unlink "cublog.dat";
    open WRITE2FILE, ">>", "cublog.dat" or die "Can't write to cublog.dat: $!";
    for (sort {$a => $b} keys %visit) {
        print WRITE2FILE "$_ $visit{$_}\n";
    }
    close WRITE2FILE;
    此腳本產(chǎn)生一個(gè) cublot.dat 文件,也就是用于 gnuplot 的數(shù)據(jù)文件。其格式如下:
    110 1620
    130 1620
    150 1621
    170 1622
    190 1624
    接著,就可以用 gnuplot 畫圖了。 gnuplot 既可以以 interactive 模式運(yùn)行(逐行輸入命令),也可以事先把需要執(zhí)行的命令寫在文件里,加載文件,一次執(zhí)行多行命令。對(duì)于較為復(fù)雜的任務(wù),后者明顯更為方便。以下是產(chǎn)生 png 圖片的腳本(根據(jù)不同的需求,我還同時(shí)寫了產(chǎn)生 eps ,jpeg 格式圖片的腳本):
    set terminal png font "/usr/share/fonts/TTF/arial.ttf"
    set format x "%2.1f"
    set xtics 0.5
    set title "CUBlog Hits Statistics"
    set xlabel "Days since 05/03/2009 00:00"
    set ylabel "Total Visits"
    set time
    unset key
    set grid
    set sample 1000
    set output "cublog_lines.png"
    plot "cublog.dat" using ($1/1440):($2) with lines
    set output "cublog_lines_fit.png"
    plot "cublog.dat" using ($1/1440):($2) with lines, 66.1446*x+1628.93
    # pause -1
    set output "cublog_boxes.png"
    plot "cublog.dat" using ($1/1440):($2) with boxes
    在終端中執(zhí)行 $ gnuplot script_name ,得到三張 png 格式的圖片。如下:
    1. lines stype

    2. lines style + 擬合的直線

    3. boxes style

    可以選擇很多的 style ,我這里用了兩個(gè)(lines and boxes)。
    您可能會(huì)問(wèn),第二張圖里面,綠色的直線代表什么意思?對(duì)了,那個(gè)就是 gnuplot 擬合出來(lái)的直線。gnuplot 具有強(qiáng)大的擬合功能,而且只需兩條命令就能完成:
    y(x) = a/1440*x + b
    fit y(x) "cublog.dat" via a,b
    第一條命令先定義了一個(gè)一元一次函數(shù)(假設(shè)訪問(wèn)量隨時(shí)間均勻變化),然后我們的目標(biāo)就是算出斜率和截距來(lái)。第二條命令就是用來(lái)算 a, b 的。依次執(zhí)行這兩條命令后,得到了 a, b 的值,然后就可以畫擬合的直線了。注意畫圖腳本中紅色部分即畫擬合直線。
    從擬合直線的斜率可以看到,此博客每天的訪問(wèn)量約為66人次。Hmm, 還不錯(cuò):)
    gnuplot 不管是畫函數(shù)圖,還是數(shù)據(jù)圖,2D 的還是 3D 的,都非常方便;功能堪比 Matlab,體積卻要比它輕巧 n 倍;而且又是自由軟件,我都有一種相見恨晚的感覺!當(dāng)年寫物理實(shí)驗(yàn)報(bào)告的時(shí)候,我咋不知道用它呢?強(qiáng)烈推薦各位使用。以后我要是當(dāng)數(shù)學(xué)老師或者物理老師,一定要求學(xué)生使用這款軟件。不會(huì)的全部不及格~嘿嘿


    本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u3/93312/showart_1921563.html
  • 您需要登錄后才可以回帖 登錄 | 注冊(cè)

    本版積分規(guī)則 發(fā)表回復(fù)

      

    北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年舉報(bào)專區(qū)
    中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
    感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP