記錄一下以前數據可視化工具的初級使用方式。
主要是用 gnuplot 將 .csv 中的數據,整合成圖形輸出。 ( 安裝直接參考: gnuplot 上的説明。)


擧個實際的例子來看這個問題。用中國主要城市的空氣污染指數 (AQI) 來做數據。 比較幾個典型城市的 AQI。

數據來源

從 github 倉庫 AQI 下到的 .csv 。大致格式如下:

13,650100,乌鲁木齐,75,1,2000-06-05
15,110000,北京,116,1,2000-06-05
16,120000,天津,81,1,2000-06-05
18,140100,太原,155,1,2000-06-05
20,210100,沈阳,93,1,2000-06-05
24,310000,上海,63,1,2000-06-05
25,320100,南京,73,1,2000-06-05
37,410100,郑州,98,1,2000-06-05
40,440100,广州,70,1,2000-06-05
38,420100,武汉,69,1,2000-06-05
  • 這個 csv 的列是: 行號,城市代號,城市名,污染指數,污染類型,時間
  • 挑選 北、南、中三個城市: 上海 (310000); 北京 (110000); 广州(440100)。

生成各個城市的數據

簡單的用 grep 來生成 3 個,城市的 .csv ,比如: (aqi.csv 就是之前下載到的 AQI 數據)

grep "^[0-9]*,110000,*" aqi.csv  > bj.csv
grep "^[0-9]*,310000,*" aqi.csv  > sh.csv
grep "^[0-9]*,440100,*" aqi.csv > guangzhou.csv

用 gnuplot 生成對比

  • X 軸為日期,格式 ‘%Y-%m-%d’。日期範圍為 2010-02-01 至 2015-02-01。
  • Y 軸為污染指數。
  • plot command 用 csv 的第 6 列和第 4 列,做 3 個城市的 .csv 數據輸出。
# set graph format
set title "AQI"
set grid y
set xlabel "日期"
set ylabel "污染"

# set csv data
set datafile separator ","
set timefmt '%Y-%m-%d'
set xdata time
set format x "%Y-%m-%d"
set xrange["2010-02-01":"2015-02-01"] 

# creating the result
plot "sh.csv" using 6:4 smooth sbezier \
        with lines title "Shanghai" linecolor rgb "blue", \
     "bj.csv" using 6:4 smooth sbezier \
        with lines title "Beijing" linecolor rgb "red", \
     "guangzhou.csv" using 6:4 smooth sbezier \
        with lines title "Guangzhou" linecolor rgb "green"

輸出結果

大概輸出結果如下:

紅線是北京,綠綫是廣州,藍綫是上海。看來是越南方空氣越好些。

gnuplot


最後

初級入門用法,還有不同的作圖命令,可以參考 gnuplot 的手冊和自帶的 samples (安裝目錄 gnuplot/demo 下)



blog comments powered by Disqus

Published

18 September 2015

Tags