Archive for January 25, 2010

GnuPlot – Hướng dẫn cài đặt và cách vẽ đồ thị


Gnuplot là một phần mềm miễn phí, dùng để vẽ đồ thị các hàm toán học, hoặc từ tập dữ liệu sẵn có. Phần sau đây sẽ hướng dẫn cách cài đặt và sử dụng vài hàm cơ bản của gnuplot.

Cài đặt Gnuplot

Download gnuplot-4.2.5.tar.gz từ http://www.gnuplot.info/download.html, đặt vào /tmp

cd /tmp
tar xzf gnuplot-4.2.5.tar.gz
cd gnuplot-4.2.5
./configure
sudo make
sudo make install

gõ lệnh gnuplot:

% gnuplot

        G N U P L O T


        Version 4.0 patchlevel 0
        last modified Thu Apr 15 14:44:22 CEST 2004
        System: Linux 2.4.23

        Copyright (C) 1986 - 1993, 1998, 2004
        Thomas Williams, Colin Kelley and many others

        This is gnuplot version 4.0.  Please refer to the documentation
        for command syntax changes.  The old syntax will be accepted
        throughout the 4.0 series, but all save files use the new syntax.

        Type `help` to access the on-line reference manual.
        The gnuplot FAQ is available from
                http://www.gnuplot.info/faq/

        Send comments and requests for help to

        Send bugs, suggestions and mods to

Terminal type set to 'x11'
gnuplot>

Thử vẽ đồ thị hàm sin(x)

gnuplot> plot sin(x)

Vẽ đồ thị từ dữ liệu có sẵn

Tạo file dữ liệu

vi data.dat

40      0.134
60      0.130
80      0.127
100     0.129
120     0.138
130     0.153
gnuplot> plot "data.dat" with lines
gnuplot>

Ta cũng có thể add thêm title, tên truc tung, trục hoành, sử dụng lệnh replot để vẽ lại đồ thị

gnuplot> set xlabel "user"
gnuplot> set ylabel "second"
gnuplot> set title "thoi gian truy cap"
gnuplot> replot
Advertisements

Comments off

Một số phím tắt hữu ích khi sử dụng Linux


Dưới đây là một số tổ hợp phím tắt hữu ích khi sử dụng Linux, danh sách này sẽ được bổ sung dần dần:

1. Trong terminal

  • <Ctrl> + L: xoá toàn bộ màn hình, giống lệnh clear
  • <Ctrl> + D: exit session, giống lệnh exit
  • <Ctrl> + R: tìm một lệnh đã chạy trước đây, nhấn <Ctrl> + R sau đó bắt đầu gõ một phần của câu lệnh, hệ thống sẽ tự hoàn tất phần còn lại dựa trên các câu lệnh đã được thực hiện trước đó
  • <Tab>: tự động hoàn tất câu lệnh
  • <Shift> + <Insert>: dán (paste) nội dung đã copy vào terminal
  • <Shift> + PageUp: cuộn màn hình lên trên một trang
  • <Ctrl> + <Alt> + F2 (<Alt> + F2> nếu đang ở chế độ console): chuyển sang virtual terminal thứ 2, tương tự với F3, F4 …

2. Trong GNOME

  • <Ctrl> + <Alt> + D: hiển thị desktop, giống <Windows> + D trong Windows
  • <Ctrl> + <Alt> + <Left/Right>: chuyển sang workspace trước/kế tiếp
  • <Ctrl> + W: đóng cửa sổ hiện thời
  • <Ctrl> + Q: thoát khỏi chương trình hiện thời
  • <Alt> + F1: Hiển thị main menu
  • <Alt> + F2: Hiển thị hộp thoại chạy dòng lệnh, giống <Windows> + R trong Windows
  • <Alt> + F5: Bỏ phóng to cửa sổ hiện thời
  • <Alt> + F9: Thu nhỏ <minimize> cửa sổ hiện thời
  • <Alt> + F10: Phóng to <maximize> cửa sổ hiện thời

3. Trong OpenOffice:

  • <Ctrl> + <Shift> + B: chuyển font sang dạng subscript, giống <Ctrl> + ‘+’ trong MS Word
  • <Ctrl> + <Shift> + P: chuyển font sang dạng supperscript, giống <Ctrl> + <Shift> + ‘+’ trong MS Word
  • <Ctrl> + 1: Single line spacing
  • <Ctrl> + 2: Double line spacing
  • <Ctrl> + 5: 1.5 line spacing

Xem danh sách chi tiết các phím tắt của OpenOffice  tại http://www.entropy.ch/software/macosx/docs/openoffice-mac/shortcuts.html

4. Trong vi (vim)

Các phím sau đây được sử dụng trong chế độ nhập lệnh (không phải chế độ nhập văn bản). Để viết về vi thì cần một bài riêng, nên ở đây cheva chỉ nêu ra một số phím/lệnh chính, chú ý các phím/lệnh sau đây có phân biệt chữ hoa và chữ thường:

  • G: tới cuối  file
  • #G: tới dòng thứ # (ví dụ 10G, 100G)
  • H: tới đầu trang
  • dd: xóa dòng hiện thời
  • yy: copy dòng hiện thời
  • p: dán xuống dòng dưới dòng hiện thời
  • P: dán vào trước vị trí con trỏ
  • /: bắt đầu tìm kiếm
  • ^: tới đầu dòng
  • $: tới cuối dòng
  • %: tới dấu đóng (mở) ngoặc tương ứng
  • %s/old_text/new_text/g: thay thế tất cả các old_text bằng new_text
  • Ở chế độ nhập văn bản, gõ <Ctrl> + P để sử dụng auto text completion

<sưu tầm>

Comments off

Bài viết hướng dẫn sử dụng các thao tác cơ bản của gnuplot để vẽ đồ thị


Giới thiệu gnuplot

gnuplot là một công cụ vẽ đồ thị gọn nhẹ và rất hữu dụng trên Linux. Đối với những người quen dùng các công cụ cồng kềnh và có giao diện đồ họa như MATLAB để làm việc này, gnuplot tỏ ra khó dùng lúc ban đầu. Tuy nhiên, nếu bạn nắm được các cú pháp cơ bản của nó, bạn sẽ thấy đây là một công vụ mạnh mẽ và đầy hiệu quả. Với chức năng tạo script để vẽ, việc tạo hoặc sửa đổi một đồ thị như hình bên dưới trở nên rất dễ dàng. Bài viết này sẽ hướng dẫn các bước để vẽ đồ thị dưới đây dùng gnuplot.

Nếu hệ thống của bạn chưa có gnuplot, bạn có thể download tại http://www.gnuplot.info/ (có cả phiên bản chạy trên win32). Nếu bạn dùng SuSE thì có thể cài đặt qua YaST.

Tạo file dữ liệu

Đầu tiên, bạn cần phải có dữ liệu để vẽ đồ thị. Trong hình trên, ta thấy đồ thị biểu diễn hiệu năng của hai thuật toán ở các tải hệ thống khác nhau. Đối với mỗi giải thuật, tại mỗi mức tải (0.1, 0.2,…,1), ta có một giá trị hiệu năng nhất định. Ví dụ đối với giải thuật 1, tại tải 0.1, giá trị hiệu năng tương ứng là xấp xỉ 0.006.

Ta tạo một file dữ liệu đầu vào để phục vụ cho việc vẽ đồ thị. Trong file này, các dải giá trị được lưu thành các cột. Trong trường hợp này, ta có 3 cột trong file dữ liệu. Cột thứ nhất chứa các giá trị tải, hệ thống: 0.1, 0.2,…, 1.0. Cột thứ hai và ba chứa các giá trị hiệu năng tại các tải tương ứng của giải thuật 1 và 2. Nói một cách khác, cột thứ nhất chứa các giá trị trên trục hoành, trong khi cột thứ hai và thứ ba chứa các giá trị trên trục tung. File dữ liệu có nội dung và định dạng như sau:

#input.dat
#sysload    	algorithm1            algorithm2
0.1    		0.0656755794997600    0.0656755794997600
0.2    		0.1238753585310630    0.1220778120277850
0.3    		0.1783263156856520    0.1748654302754770
0.4    		0.2370742533976900    0.2203082963571380
0.5    		0.2942470707894460    0.2651562304263400
0.6		0.3536638858995090    0.3023740314936200
0.7    		0.4005633048575230    0.3468979191578140
0.8    		0.4539412556575660    0.3790391314322320
0.9    		0.4871768607958810    0.4096393763240620
1.0    		0.5192035653219690    0.4394196421249750

Lưu file dữ liệu với tên là input.dat. Lưu ý rằng trong các file dữ liệu hoặc các file script, dấu # được dùng để ghi các chú thích, và các ký tự sau dấu # sẽ bị bỏ qua.

Các bước vẽ đồ thị

Sau khi tạo xong file dữ liệu, ta chạy gnuplot để bắt đầu vẽ. Giả sử bạn đang ở trong chế độ đồ họa (ta có thể vẽ và ghi kết quả ra file ở trong chế độ text, ví dụ trong phiên truy cập tới một máy từ xa, phần cuối bài sẽ nói thêm về vấn đề này), mở một cửa sổ terminal và gõ gnuplot. Trong chương trình gnuplot, gõ các dòng lệnh sau đây. Hầu hết các câu lệnh sau đều rất đơn giản và dễ hiểu.

set   autoscale    # scale axes automatically
set title "Algorithm 1 vs. Algorithm 2" #this is the title of your chart
set xlabel "System Load"
set ylabel "Performance"
set  key left top  #this command is to specify where to put your legend, 
                   #it can be keywords like: top, bottom, left, right or 
                   #exact position: set key x,y
set pointsize 2 #this is the size of the mark points on a line

Các câu lệnh kể trên dùng để thiết lập định dạng cho bản vẽ, tiêu đề cho các trục tọa độ và vị trí cũng như nội dung của chú thích. Tiếp theo, ta thực hiện phần quan trọng nhất: vẽ đồ thị. Gõ vào gnuplot câu lệnh sau:

plot    "input.data" using 1:2 title 'algorithm 1' with linespoints  lt -1 pt 1 lw 1, \
        "input.data" using 1:3 title 'algorithm 2' with linespoints lt -1 pt 12 lw 1

Các trường trong câu lệnh có ý nghĩa như sau:

  • “input.data”: đây là tên của file dữ liệu, file này cần có định dạng như đã mô tả ở phần trên. Trong trường hợp này, ta giả sử rằng file này nằm trong thư mục hiện thời, nếu không, ta phải chỉ đường dẫn cụ thể tới file đó.
  • x:y là thứ tự của cột dữ liệu được vẽ, cột thứ nhất (x) chứa dữ liệu trên trục hoành, cột thứ hai (y) chứa giá trị trên trục tung. Chú ý rằng các cột dữ liệu được đánh số từ 1 chứ không phải từ 0. Trong trường hợp này, ta muốn vẽ hai đường cong với cùng các giá trị hoành độ (cột 1) và các giá trị tung độ khác nhau (cột 2 và 3).
  • title xác định chú thích của mỗi đường cong trên đồ thị, trong trường hợp này là “algorithm 1” và “algorithm 2“.
  • with linespoints chỉ ra rằng ta muốn đánh dầu các điểm tại các giá trị dữ liệu và các điểm này được nối với nhau bằng một đường thắng.
  • lt -1 xác định màu của đường cong (và các điểm dữ liệu), -1 nghĩa là màu đen, bạn có thể thử các giá trị khác.
  • pt 1 xác định hình dạng của các điểm đánh dấu của một đường cong. Ví dụ 1 là dấu cộng (+), 12 là dấu hình thoi… Lưu ý rằng nếu bạn xuất đầu ra ra màn hình và xuất đầu ra ra file, các giá trị này sẽ cho những hình dạng khác nhau, do đó bạn nên kiểm tra lại để chắc chắn rằng chúng được hiển thị đúng như bạn mong muốn.
  • lw 1 xác định độ dày của đường cong, bạn nên thử một vài giá trị để xác định một giá trị phù hợp.

Nếu bạn muốn vẽ nhiều đường cong trên một đồ thị, hãy thêm dấu phẩy (,) và dấu gạch ngược (\) để bắt đầu một dòng mới và sử dụng cùng cú pháp như trên trừ việc không phải gõ lại plot ở đầu dòng. Trong trường hợp này tôi vẽ hai đường cong, đường cong thứ nhất sử dụng dữ liệu ở cột 1 và 2, đường cong thứ hai sử dụng dữ liệu ở cột 1 và 3.

Khi bạn đã gõ xong các dòng trên, nhấn “Enter” để xem kết quả. Khi đó, nếu không có lỗi gì (chẳng hạn file dữ liệu không tồn tại, cú pháp bị sai) chương trình sẽ mở một cửa sổ đồ họa mới để hiển thị đồ thị vừa được vẽ.

In kết quả ra file

Cách vẽ kể trên được dùng trong khi bạn muốn sửa và kiểm tra hình thức bản vẽ. Sau khi đã đạt được kết quả mong muốn, bạn muốn lưu kết quả vào một file .eps. Bạn cần gõ các lệnh sau:

set terminal postscript eps enhanced mono dashed lw 1
set output "plot.eps"
replot

Đoạn mã trên thiết lập đầu ra là file plot.eps và vẽ lại đồ thị vào đầu ra mới này. Bạn sẽ không thấy kết quả được hiển thị trên cửa sổ đồ thị nữa. Kiểm tra trong thư mục hiện thời, bạn sẽ thấy file plot.eps mới được tạo. Cách này có thể được dùng khi bạn muốn vẽ đồ thị mà không ở trong chế độ đồ họa.

Nếu bạn muốn chuyển lại về chế độ vẽ vào cửa số, gõ các lệnh sau:

set size 1,1
set terminal x11

Vẽ bằng file script

Tới đây, bạn tạo được đồ thị như mong muốn. Tuy vậy, bạn không muốn mỗi lần chạy gnuplot lại phải gõ lại các câu lệnh định dạng đồ thị, hoặc nếu bạn có thay đổi về dữ  liệu và muốn vẽ lại đồ thị, bạn không muốn lặp lại tất cả các thao tác ở trên. Khi đó, bạn chép tất cả các câu lệnh kể trên vào một file, đặt tên là plot.script.

#plot.script
set   autoscale 
set title "Algorithm 1 vs. Algorithm 2" 
set xlabel "System Load"
set ylabel "Performance"
set  key left top  
set pointsize 2 

set terminal postscript eps enhanced mono dashed lw 1
set output "plot.eps"

plot    "input.data" using 1:2 title 'algorithm 1' with linespoints  lt -1 pt 1 lw 1, \
        "input.data" using 1:3 title 'algorithm 2' with linespoints lt -1 pt 12 lw 1

Mỗi lần bạn cần vẽ lại đồ thị, bạn chỉ cần vào gnuplot và gõ lệnh:

load "plot.script"

để thu được file plot.eps với đồ thị như mong muốn. Bạn cũng có thể thay đổi các tiêu đề, dữ liệu, thêm bớt các đường… và vẽ lại đồ thị một cách nhanh chóng.

Ta cũng có thể gõ trực tiếp từ Linux mà không phải vào gnuplot:

$ gnuplot plot.script

để thu được file đồ thị kể trên.

Hy vọng bài viết này giúp cho bạn nắm được các bước cơ bản để vẽ một đồ thị với gnuplot và viết một script để thực hiện việc vẽ một cách nhanh chóng. Ngoài các thao tác kể trên, còn rất nhiều tính năng hữu ích của gnuplot mà bạn có thể tìm thấy trên mạng để phục vụ cho nhu cầu cụ thể của mình.

<sưu tầm>

Comments (3) »