跳到主要內容

利用gnuplot製作3d圖形

最近班級的第一次月考成績出爐,想說看看月考成績和班級座位是否有任何關係,找出 gnuplot 這套強大的函數繪圖軟體來作圖觀察看看。
做出的圖形如下,還真的可以看出座位表和成績之間的關係呢。

把製作的過程記起來,以免以後忘記了。
[@more@]
這個製作的過程很早之前就試過了,還在校務系統的程式上多加上成績項目和座位表的報表輸出的功能。因為 gnuplot 是利用指令作圖,太久沒用幾乎都忘光了,所以把完整的過程記錄下來當作以後的參考。
1.下載 gnuplot
gnuplot 的官方網頁:http://www.gnuplot.info/
到 sourceforge 下載最新版
下載後,將壓縮檔解開後,在「bin」資料夾內就有gnuplot的執行程式「wgnuplot.exe」。
2.至校務系統下載成績檔
校務系統內的「課程中心」的成績功能裡,有各項成績報表匯出的功能。

匯出的成績報表裡包含學生資料、成績和座位行列。
匯出的資料是純文字格式,資料用「Tab」分隔,共有7欄,有#開頭的行是註解,並不會用在繪圖。
其中成績是第5欄,座位是6, 7欄,定位的方式是站著講台往學生方向,坐標原點在左下方。其中第6欄是X,第7欄是Y。
把資料存成純文字檔,例如檔名:testdata.txt,放在gnuplot主程式同一個資料夾內。
3.執行 gnuplot
 
gnuplot主要是利用命令來執行繪圖的動作。
輸入「splot "testdata.txt" using 6:7:5」利用testdata.txt 中第6,7,5欄的資料順序來繪製3d圖形。
可以利用滑鼠拖曳圖形來旋轉。
輸入「set isosamples 100,100」設定100的取樣值,讓圖形可以更平滑,再輸入「replot」重新繪圖,可以看到變化。
輸入「set dgrid 40,40」增加繪圖點。

輸入「set pm3d」繪製更好看的3d圖形。
 
原本預設的顏色並不是很好,所以重新設定調色盤「set palette model HSV functions gray,1,1」重新上色
 
紅色的十字看起來很礙眼,所以利用「set hidden3d」隱藏起來。
 
 可以用滑鼠來移動圖形,呈現各種不同的圖形。
 
 4.把圖形儲存到檔案上
調整好圖形之後,就可以把圖形儲存下來。要把gnuplot繪出的圖形存下來時,要有兩個動作:
a.設定輸出方式:set terminal jpeg
把輸出方式設定成jpeg圖形格式
b.設定輸出檔名:set output "test.jpg"
再輸入 replot 就可以把圖形存成test.jpg

輸出後,再輸入「set terminal windows」把輸出方式切換回gnuplot的繪圖視窗,再 replot 後就可以調整圖形。
 輸出的圖形如下:

附記:
如果要輸入圖形的標題,可利用 set title "標題" 的方式。
 

留言

這個網誌中的熱門文章

SSH Tunnel(Port Forwarding)的應用

自己在管理伺服器和防火牆原則是最小開放原則,一定需要的服務 port 才會開放,例如網頁伺服器的 80、443 等。而管理用的 ssh ,可以的話就限縮來源 IP 範圍,加上限制可以登入的帳號或群組,要不然就改 port 編號;不過,改 port 編號會變成自己在遠端登入時要回想是改成多少,有點不是很方便。 所以最近建置的伺服器就不改 port 了,會加上 fail2ban 的防衛機制。 因為最小開放原則,像是 webmin(10000)這樣的 port 就不會開放,如果想要用的話,就用 ssh tunnel 方式作跳板連接。 例如伺服器的 public ip:123.123.123.123,要連 webmin 的話,就用: ssh 123.123.123.123 -L 10000:127.0.0.1:10000 SSH 登入後就會在客戶端開啟 127.0.0.1:10000 的監聽埠,用瀏覽器連本機的 127.0.0.1:10000 就會跳到伺服器端的 10000 埠。 一直以來,我都以為 ssh -L (Local Port Forwarding)方式只會在本機端綁定 127.0.0.1:xxxx的情形。不過,最近因為要解決一個臨時伺服器的設定問題,才發現原來不是只能綁在 127.0.0.1 上。 網路架構: 外部 public ip:123.123.123.0/24 內部 private ip:10.1.0.0/16 內部切出多個 class C的網路區域,其中 10.1.1.0/24 是 ServerZone,在外面用 DNAT 的方式將服務要求導入內部的伺服器。 其他 10.1.n.0/24 是各個區域內容IP,只能 NAT 出去,外部不能訪問到。 需求: Server-01:10.1.1.2,Server-02:10.1.20.2 Server-01在 ServerZone 內,從外部可以訪問,Server-02 在 PrivateZone 內,外部連不到。ServerZone 和 PrivateZone 彼此可以 SSH 互連。 現在希望可以在不變動兩台 Server 的 IP 區域,讓 Server-02可以被外部訪問到。 最簡單的方式就是先登 Server-01後,再從 Server-01 terminal 登到 Server-02上。但是需求是,...

IPv6 系列(五):KEA DHCP SERVER

學校在純 IPv4 的環境時,採用 ISC-DHCP Server 來發放教學區域的私有 IP(10.10.xxx.xxx),並使用閘道 Fortigate 作 NAT 連接到 Internet。 採用 IPv6 後,原本是要使用 ISC-DHCPv6 來作為 IPv6 發放,結果 ISC-DHCPv6 架不起來。不過在查詢 DHCPv6 的過程中,發現 ISC(Internet System Consortium)已開發出下一代的 DHCP Server:Kea Dhcp Server。 Kea Dhcp Server 官網: https://www.isc.org/kea/ 摘錄  https://www.itread01.com/content/1548712273.html  對 Kea DHCP Server 的介紹: Kea DHCP Server 由 Internet Systems Consortium(ISC) 開發的開源 DHCPv4/DHCPv6 伺服器。Kea DHCP Server 是一個高效能的,可擴充套件的DHCP伺服器引擎。通過hooks library可以很容易的修改和擴充套件。 Kea包含的功能元件 keactrl — kea伺服器啟動,停止,配置重置和狀態查詢元件 kea-dhcp4 — DHCPv4伺服器程式,用於響應客戶端的DHCPv4查詢。 kea-dhcp6 — DHCPv6伺服器程式,用於響應客戶端的DHCPv6查詢。 kea-dhcp-ddns — DHCP動態DNS程式.這個程式在DHCP伺服器和DNS伺服器之間扮演者調解者。它接收來自DHCP伺服器域名更新請求和傳送DNS更新訊息給DNS伺服器。也就是說DDNS捕獲使用者每次變化的IP地址,然後將其與域名相對應,這樣其他上網使用者就可以通過域名來進行交流。而最終客戶所要記憶的全部,就是記住動態域名商給予的域名即可,而不用去管他們是如何實現的。 軟體執行環境 加密庫Botan或者OpenSSL log4cplus 1.0.3+ 如果有需要mysql,需要MySQL headers and libraries。可選(postgresql、cassandra類同) 選用 Kea DHCP Server 的原因,...

IPv6 系列(四):安全公用 DNS

繼學校開始採用 IPv6 後,在 Fortigate 防火牆除了原有的 IPv4 規則外,還要針對 IPv6 作設定。因為學校的資安策略除了會管制外部對內往伺服器的連線外,還會針對內部對外的不當連線,加上惡意網域日新月異,防不勝防,如此一來會增加人員與設備的負擔。 在 IPv4 環境中,學校內行政辦公室電腦採用固定 IP,其他教學部份均為 DHCP 動態發放 IP。而在 IPv6 的環境下,不管是 Stateless 或 Stateful 設定 IPv6,都會用到 DHCPv6 來設定 DNS 資訊。一般上網的動作一定會有 DNS 查詢的動作,所以可以把 DNS 查詢當作資安的防護層,也就是採用具有過瀘功能的公用 DNS 伺服器(Public DNS servers)。 提到 public dns server,一般都會想到的是 Google public dns 服務(8.8.8.8、8.4.4.8),但查詢 Google 的說明似乎沒有看到 Google 會特別針對資安防護的功能,所以改採用 cloudflare dns。 cloudflare dns 可以設定不同安全等級的 dns 位址: 一般使用 1.1.1.1  1.0.0.1 2606:4700:4700::1111  2606:4700:4700::1001 Malware Blocking Only 1.1.1.2 1.0.0.2 2606:4700:4700::1112 2606:4700:4700::1002 Malware and Adult Content 1.1.1.3 1.0.0.3 2606:4700:4700::1113 2606:4700:4700::1003 而且從 cloudflare dns 的官網說明上看,它還有隱私、安全的功能,速度也比較快。 除了 cloudflare dns 外,還有 opendns、comodo sercure dns 也有提供安全等級的選擇,但速度比較慢。 參考資料: https://blog.cloudflare.com/introducing-1-1-1-1-for-families/ https://developers.cloud...