Mansun Kuo(coccolegacy@gmail.com)
2013/05/13
在 GadgetExamples 就可以看到許多圖形範例與程式碼
pandoc -s -S -t slidy googleVis_demo.md -o googleVis_demo_slidy.html
library(googleVis)
## Welcome to googleVis version 0.4.2
##
## Please read the Google API Terms of Use before you use the package:
## https://developers.google.com/terms/
##
## Type ?googleVis to access the overall documentation and
## vignette('googleVis') for the package vignette. You can execute a demo of
## the package via: demo(googleVis)
##
## More information is available on the googleVis project web-site:
## http://code.google.com/p/google-motion-charts-with-r/
##
## Contact: <rvisualisation@gmail.com>
##
## To suppress the this message use:
## suppressPackageStartupMessages(library(googleVis))
library(RJSONIO)
# 臺北旅遊網-景點資料(中文)
travel.filename = "./data.json"
# fileUrl = "http://data.taipei.gov.tw/opendata/apply/query/MzVERDUyOTItNjI1NC00NjcyLUE3OEItNDY3ODhDMURFM0Yy?$format=json"
# download.file(fileUrl,destfile=travel.filename)
con = file(travel.filename)
travel.json = readLines(con, warn=F) #避免沒讀到EOF的warning message
travel.json = fromJSON(travel.json, encoding="UTF-8")
close(con)
共讀了212筆景點資料,在R中會讀成一個長度為212的List。
class(travel.json)
## [1] "list"
str(travel.json)
## List of 212
## $ : Named chr [1:25] "24" "10" "景點" "單車遊蹤" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "49" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "73" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "96" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "118" "10" "景點" "公共藝術" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "142" "10" "景點" "藍色公路" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "163" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "164" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "165" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "166" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "167" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "168" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "169" "10" "景點" "其他" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "170" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "171" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "172" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "173" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "174" "10" "景點" "城市公園" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "175" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "176" "10" "景點" "城市公園" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "177" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "178" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "179" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "180" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "181" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "50" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "51" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "52" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "53" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "54" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "55" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "56" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "57" "10" "景點" "城市公園" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "58" "10" "景點" "城市公園" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "59" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "60" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "61" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "62" "10" "景點" "城市公園" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "63" "10" "景點" "城市公園" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "64" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "65" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "66" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "67" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "68" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "69" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "70" "10" "景點" "城市公園" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "71" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "72" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "74" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "75" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "76" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "77" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "78" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "79" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "80" "10" "景點" "教堂" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "81" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "82" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "83" "10" "景點" "公共藝術" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "84" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "85" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "86" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "87" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "88" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "89" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "90" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "91" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "93" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "94" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "95" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "92" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "183" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "184" "10" "景點" "親子共遊" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "185" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "186" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "187" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "188" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "189" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "190" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "191" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "192" "10" "景點" "展演會館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "193" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "194" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "195" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "196" "10" "景點" "公共藝術" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "197" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "198" "10" "景點" "其他" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "199" "10" "景點" "其他" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "200" "10" "景點" "其他" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "201" "10" "景點" "親子共遊" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "202" "10" "景點" "其他" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "203" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "204" "10" "景點" "其他" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "205" "10" "景點" "城市公園" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "119" "10" "景點" "親山健行" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "120" "10" "景點" "博物館" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "121" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "122" "10" "景點" "公共藝術" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "123" "10" "景點" "廟宇" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## $ : Named chr [1:25] "124" "10" "景點" "歷史建築" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
## [list output truncated]
每一筆景點資料也是一個List,共有25個資料欄位,。
class(travel.json[1])
## [1] "list"
str(travel.json[1])
## List of 1
## $ : Named chr [1:25] "24" "10" "景點" "單車遊蹤" ...
## ..- attr(*, "names")= chr [1:25] "rownumber" "ref_wp" "cat1" "cat2" ...
names(travel.json[[1]])
## [1] "rownumber" "ref_wp" "cat1" "cat2" "serial_no"
## [6] "memo_tel" "memo_fax" "memo_cost" "memo_time" "stitle"
## [11] "xbody" "avbegin" "avend" "idpt" "xurl"
## [16] "address" "xpostdate" "langinfo" "poi" "info"
## [21] "longitude" "latitude" "mrt" "servicetype" "file"
將json轉為data.frame。
travel.data = matrix(nrow=length(travel.json),
ncol=length(travel.json[[1]])
)
for (i in 1:length(travel.json)){
for (j in 1:length(travel.json[[1]])){
travel.data[i, j] = travel.json[[i]][[j]]
}
}
colnames(travel.data) = names(travel.json[[1]])
travel.data = data.frame(travel.data, stringsAsFactors=F)
資料成功轉為data.frame。
str(travel.data)
## 'data.frame': 212 obs. of 25 variables:
## $ rownumber : chr "24" "49" "73" "96" ...
## $ ref_wp : chr "10" "10" "10" "10" ...
## $ cat1 : chr "景點" "景點" "景點" "景點" ...
## $ cat2 : chr "單車遊蹤" "博物館" "博物館" "歷史建築" ...
## $ serial_no : chr "2011051800000037" "2011051800000125" "2011051800000182" "2011051800000399" ...
## $ memo_tel : chr "" "02-8733-5678、 02-8369-5104" "02-2831-4551" "02-2861-8325" ...
## $ memo_fax : chr "" "" "2831-4405" "" ...
## $ memo_cost : chr "" "" "" "" ...
## $ memo_time : chr "" "園區水鄉庭園戲水池於2012年5月19日(星期六)起正式開放。\n夏日期間(每年7月1日至8月31日)自上午9點開放至晚上8點(售票至7點);非夏日期"| __truncated__ "開放時間 每週一休館(如遇國定假日則延至隔日休館,詳情請注意新聞通知,或可以打電話至本館詢問)。 \n週日及週二至周五:從上午九時"| __truncated__ "每日9:00~17:00" ...
## $ stitle : chr "基隆河左、右岸親水" "自來水博物館" "臺北市立天文科學教育館" "陽明山光復樓" ...
## $ xbody : chr "從左岸的林安泰疏散門進入河濱腳踏車道,遊客可以看見紀錄著基隆河緣起,整治故事的解說牌,讓民眾在運動休閒之餘,還能瞭解基隆河長長"| __truncated__ "位於新店溪與思源街旁的臺北自來水發源地--臺北水源地唧筒室,其主體建築於1908年,迄今已有近百年歷史。其建築最大特色是採新古典主義"| __truncated__ "你知道天文的奧妙嗎?臺北市立天文科學教育館。半圓形的建築物是全天域劇院,直徑35 米,外表覆蓋金黃色面板,是一個顯目的地標,裡面有"| __truncated__ "陽明公園的地標之一辛亥光復樓,隱身在濃密的樹林間,是一座中國式富麗堂皇的2層建築,在民國60年為了紀念辛亥起義一甲子所建,位於陽明"| __truncated__ ...
## $ avbegin : chr "2010-02-14" "2008-08-13" "2008-08-13" "2008-08-13" ...
## $ avend : chr "2012-04-19" "2012-12-04" "2012-06-28" "2012-01-19" ...
## $ idpt : chr "臺北旅遊網" "臺北旅遊網" "臺北旅遊網" "臺北旅遊網" ...
## $ xurl : chr "http://www.riversidepark.taipei.gov.tw/" "http://waterpark.twd.gov.tw/index_c.asp" "http://www.tam.gov.tw/MP_104051.html" "" ...
## $ address : chr "臺北市 士林區基隆河左、右岸" "臺北市 中正區思源街1號" "臺北市 士林區基河路363號" "臺北市 北投區湖山路2段26號" ...
## $ xpostdate : chr "2012-04-19" "2012-12-04" "2012-06-28" "2012-01-19" ...
## $ langinfo : chr "10" "10" "10" "10" ...
## $ poi : chr "Y" "Y" "Y" "Y" ...
## $ info : chr "捷運站名:1.左岸:淡水線圓山站,往民族東路、新生北路方向步行,穿越中山高速公路底下涵洞,再右轉即抵達。2.右岸:內湖線大直站往大"| __truncated__ "自來水博物館區:捷運公館站4號出口,左轉往思源街與汀州路口方向步行約5分鐘。親水體驗教育區:捷運公館站1號出口,往汀州路三段160巷"| __truncated__ "捷運站名:捷運淡水線:捷運紅線 (淡水線):劍潭、士林或芝山站下車後步行約20分鐘左右可達。接駁公車:紅12、41、紅3、紅30(經捷運劍潭"| __truncated__ "捷運站名:劍潭站轉乘紅5或休閒公車111至陽明山停車場1.公車:230、260、小9、休閒公車109、111、公路局(臺北往金山)可達 2.車位:陽"| __truncated__ ...
## $ longitude : chr "121.530239" "121.530965" "121.51897" "121.540118" ...
## $ latitude : chr "25.071668" "25.014091" "25.09606" "25.159277" ...
## $ mrt : chr "圓山" "公館" "劍潭" "劍潭" ...
## $ servicetype: chr "" "" "無障礙設施" "" ...
## $ file : chr "<file><img description=\"基隆河左岸\">http://www.taipeitravel.net/d_upload_ttn/sceneadmin/pic/11000840.jpg</img><img descriptio"| __truncated__ "<file><img description=\"自來水博物館_1\">http://www.taipeitravel.net/d_upload_ttn/sceneadmin/pic/11000794.jpg</img><img descri"| __truncated__ "<file><img description=\"臺北市立天文科學教育館_1\">http://www.taipeitravel.net/d_upload_ttn/sceneadmin/pic/11000770.jpg</img><"| __truncated__ "<file><img description=\"陽明山光復樓\">http://www.taipeitravel.net/d_upload_ttn/sceneadmin/pic/11000975.jpg</img><img descript"| __truncated__ ...
設定經緯度和超連結
travel.data$LatLon = paste(travel.data$latitude,
travel.data$longitude,
sep=":")
travel.data$LatLon[1]
## [1] "25.071668:121.530239"
travel.data$tips = paste("<a href='",
travel.data$xurl,
"'>",
travel.data$stitle,
"</a>",
sep="")
travel.data$tips[1]
## [1] "<a href='http://www.riversidepark.taipei.gov.tw/'>基隆河左、右岸親水</a>"
gvisdata = data.frame(travel.data[, c("tips", "memo_tel", "LatLon",
"address", "mrt")])
Table = gvisTable(gvisdata, options=list(page="enable"))
print(Table, "chart")
Map = gvisMap(travel.data, "LatLon", "tips",
options=list(showTip=TRUE,
enableScrollWheel=T,
width=750, height=500,
useMapTypeControl=T,
mapType='normal'
)
)
print(Map, "chart")
將捷運站附近有超過五個景點之挑出來以長條圖呈現。
mrt = table(travel.data$mrt)
gvisdata = data.frame(mrt)
gvisdata = gvisdata[order(gvisdata[, 2], decreasing=T), ]
gvisdata[which(gvisdata[,1] == ""), ] = NA
Bar = gvisBarChart(gvisdata[which(gvisdata[,2]>5),])
print(Bar, "chart")
合併gvis物件
Map = gvisMap(travel.data, "LatLon", "tips",
options=list(showTip=TRUE,
enableScrollWheel=T,
useMapTypeControl=T,
width=450, height=500,
mapType='normal'
)
)
Bar = gvisBarChart(gvisdata[which(gvisdata[,2]>5),],
options=list(width=300, height=500,
chartArea="{left: '30%', top:'20%'}",
legend="{position: 'top'}")
)
Merge = gvisMerge(Bar, Map, horizontal=T)
print(Merge, "chart")
|
|
|
這裡我們使用 薪資及生產力統計資料查詢系統 之資料來示範Motion Chart和Shiny。
library(xlsx)
worker_data = read.xlsx2("MoreTable01.xls", 1, stringsAsFactors=F)
colnames(worker_data) = gsub("\\.", "", colnames(worker_data))
worker_data[worker_data == "-"] = NA
index = which(colnames(worker_data) != "行業")
for(i in index){
worker_data[, i] = as.numeric(worker_data[, i])
}
worker_data$時間年 = worker_data$時間年 + 1911
worker_data$平均時薪 = worker_data$平均薪資/worker_data$平均工時
str(worker_data)
## 'data.frame': 661 obs. of 17 variables:
## $ 時間年 : num 1973 1973 1973 1973 1973 ...
## $ 行業 : chr "工業部門" "礦業及土石採取業" "製造業" "電力及燃氣供應業" ...
## $ 受僱員工人數 : num 1652079 60655 1456309 14424 114276 ...
## $ 平均薪資 : num 2254 2964 2179 4331 2558 ...
## $ 經常性薪資 : num 1919 2335 1832 3642 2558 ...
## $ 非經常性薪資 : num 335 629 347 689 NA 298 376 137 423 538 ...
## $ 加班費 : num NA NA NA NA NA NA NA NA NA NA ...
## $ 平均工時 : num 223 186 226 236 205 ...
## $ 正常工時 : num 203 181 204 184 205 ...
## $ 加班工時 : num 19.2 4.9 21.1 51.7 NA 18.3 14.8 4.6 16.3 54.3 ...
## $ 進入率 : num 5.43 5.37 4.85 0.88 13.74 ...
## $ 退出率 : num 4.88 4.78 4.43 0.66 11.5 3.3 4.73 4.52 4.29 0.99 ...
## $ 勞動生產力指數 : num NA NA NA NA NA NA NA NA NA NA ...
## $ 單位產出勞動成本指數: num NA NA NA NA NA NA NA NA NA NA ...
## $ 平均薪資指數 : num 5.3 5.56 5.14 4.45 6.53 6.53 7.24 8.49 6.88 6.52 ...
## $ 經常性薪資指數 : num 5.61 5.74 5.45 5.54 7.21 7.29 7.9 10.8 7.42 8.82 ...
## $ 平均時薪 : num 10.13 15.93 9.66 18.34 12.47 ...
Motion = gvisMotionChart(worker_data,
idvar="行業",
timevar="時間年",
xvar="受僱員工人數",
yvar="平均時薪")
# plot(Motion)
print(Motion, "chart")
library(googleVis)
library(shiny)
library(xlsx)
worker_data = read.xlsx2("MoreTable01.xls", 1, stringsAsFactors=F)
colnames(worker_data) = gsub("\\.", "", colnames(worker_data))
worker_data[worker_data == "-"] = NA
index = which(colnames(worker_data) != "行業")
for(i in index){
worker_data[, i] = as.numeric(worker_data[, i])
}
worker_data$時間年 = worker_data$時間年 + 1911
worker_data$平均時薪 = worker_data$平均薪資/worker_data$平均工時
str(worker_data)
choices_vector = c("受僱員工人數",
"平均薪資",
"經常性薪資",
"非經常性薪資",
"加班費",
"平均工時",
"正常工時",
"加班工時",
"進入率",
"退出率",
"勞動生產力指數",
"單位產出勞動成本指數",
"平均薪資指數",
"經常性薪資指數",
"平均時薪"
)
shinyServer(function(input, output) {
datasetInput = reactive({
year = input$year
print(year)
var = input$var
print(var)
is_sort = input$is_sort
print(is_sort)
sub_data = worker_data[which(worker_data$時間年 == year),
c("行業", var)]
if (is_sort){
index = order(sub_data[, var], decreasing=T)
sub_data = sub_data[index, ]
}
data.frame(sub_data)
})
typeInput = reactive({
type = input$type
})
gvis_list = list("Motion"=gvisMotionChart,
"長條圖"=gvisBarChart,
"圓餅圖"=gvisPieChart,
"表格"=gvisTable)
output$view = renderGvis({
if (typeInput() != "Motion"){
gvis_list[[typeInput()]](datasetInput())
}
})
output$motion = renderGvis({
if (typeInput() == "Motion"){
gvisMotionChart(worker_data,
idvar="行業",
timevar="時間年",
xvar="受僱員工人數",
yvar="平均時薪")
}
})
})
shinyUI(pageWithSidebar(
headerPanel("薪資及生產力統計資料"),
sidebarPanel(
selectInput("type", "樣式",
choices = c("Motion", "長條圖", "圓餅圖", "表格"),
selected = "Motion"
),
conditionalPanel("input.type != 'Motion'",
selectInput("var", "項目",
choices = c("受僱員工人數",
"平均薪資",
"經常性薪資",
"非經常性薪資",
"加班費",
"平均工時",
"正常工時",
"加班工時",
"進入率",
"退出率",
"勞動生產力指數",
"單位產出勞動成本指數",
"平均薪資指數",
"經常性薪資指數",
"平均時薪"
),
selected = "平均時薪"
),
sliderInput("year", "西元年",
min=1973, max=2012, value=2012, step=1,
format="###0"
),
checkboxInput("is_sort", "排序", T)
)
),
mainPanel(
conditionalPanel("input.type != 'Motion'",
htmlOutput("view")
),
conditionalPanel("input.type == 'Motion'",
htmlOutput("motion")
)
)
))