顯示具有 web 標籤的文章。 顯示所有文章
顯示具有 web 標籤的文章。 顯示所有文章

2023年1月11日 星期三

Python - streamlit dashboard

在 Python 環境中, Streamlit 模組提供資料分析的網頁服務框架,內建常用的網頁操作控制項,配合 pnadas 資料分析模組,matplotlib 等視覺化模組,可以快速建立互動式網頁服務與企業級儀表板,其功能與 R 語言的 shiny 套件相似。





YouTube: https://youtu.be/FW-dl-flLvk

【記得按 讚、訂閱、開啟小鈴鐺】


Community Cloud(包括免費版本): https://streamlit.io/cloud

模組: Python - streamlit

LINK: https://rwepa.blogspot.com/2023/01/python-streamlit-dashboard.html

Code: https://github.com/rwepa/teaching-streamlit

# end

2021年3月15日 星期一

R shiny 互動模型 crosstalk 套件








主題

R在使用 shiny 套件建立網頁應用程式時, 如果希望二個控制項 (widgets)產生互相聯動效果, 此時可考慮使用 crosstalk 套件[1]. 例如:圖形上選取一個或一個以上之範圍,旁邊自動篩選資料值. 詳細使用方法參考crosstalk官網[2]之說明. 此互動式功能與 plotOutput("plot1", click = "plot_click")[3]功能類似. 本範例說110年2月年粗出生率(%)之互動式繪圖, 資料來源[4].

使用觀念

  1. crosstalk 套件使用 R 的API稱為SharedData R6 class
  2. 將SharedData物件傳遞給資料框或其他R物件,即可產生互動連結之效果。
  3. 支援使用 htmlwidget 套件客製化互動控制項。

關鍵字
#shiny
#crosstalk
#interactive plot
#leaflet

套件
library(readxl)    # read_excel 匯入 Excel 資料檔
library(crosstalk) # SharedData 互相聯動效果
library(leaflet)   # leaflet    互動式地圖
library(DT)        # datatable  互動式表格
library(htmltools) # tags       HTML標籤

執行結果











R程式碼下載


R程式碼


# date     : 2021.03.16
# author   : Ming-Chang Lee
# email    : alan9956@gmail.com
# RWEPA    : http://rwepa.blogspot.tw/
# Encoding : UTF-8

library(readxl)    # read_excel
library(crosstalk) # SharedData
library(leaflet)   # leaflet
library(DT)        # datatable
library(htmltools) # tags

# 匯入資料
# https://github.com/rwepa/DataDemo/blob/master/taiwan_birth.xlsx
birth <- read_excel("taiwan_birth.xlsx")

# 將資料轉換為 SharedData 物件
df <- SharedData$new(birth[c("city", "annua_crude_birth_rate", "longitude", "latitude")])

# 建立標題標題
rr <- tags$div(
  HTML('<a href="http://rwepa.blogspot.com/">110年2月粗出生率%</a>')
)

# 建立2行互相聯動效果
bscols(widths = c(5, 7),
  leaflet(df, height=700) %>% 
    addTiles() %>% 
    addMarkers(popup = ~city) %>% 
    setView(lng = 120.9876, lat = 23.8387, zoom = 7) %>%
    addControl(rr, position = "topright"),
  datatable(df,
            rownames = FALSE,
            colnames = c("地區","110年2月台灣粗出生率%", "經度", "緯度"),
            options = list(pageLength = 10,
                           searching = FALSE),
            height=600)
)
# end

2019年10月13日 星期日

資料視覺化於相關性分析-弦圖 (Chord Diagram)


更新日期: 2022.6.7


配合新版 R-4.2.0 使用以下任何一種方法重新安裝chorddiag套件:

# 方法1 

install_github 函數, 重新安裝套件.

devtools::install_github("mattflor/chorddiag")

# 方法2 

下載以下更新 zip 檔案, 使用 install.packages 函數安裝.


install.packages("chorddiag.zip", repos = NULL, type = "win.binary")

更新日期: 2020.6.11

配合新版 R-4.0.0 可使用以下指令, 重新安裝套件

devtools::install_github("mattflor/chorddiag", force = TRUE)

更新日期: 2019.10.17

在 Windows 環境中, 使用 devtools::install_github("mattflor/chorddiag") 函數會有顯示錯誤, 此時可考慮下載以下  chorddiag.zip 檔案, 在 RStudio 軟體中, 直接安裝此套件.

https://github.com/rwepa/DataDemo/blob/master/chorddiag.zip

RStudio \ 選取右下角 Packages \ Install \ Install from: 改為 [Package Archive File (.zip, .tar.gz)] \ 選取 chorddiag.zip \ 按 Open \ 按 Install 即可.
# end

資料視覺化於相關性分析-弦圖 (Chord Diagram)

本篇文章介紹 R 軟體在大量資料的相關性資料視覺化應用, 大量數值資料結果有時不易看出資料的樣式 (Patterns), 此時可使用弦圖以建立視覺化結果.
弦圖 (Chord Diagram, Chordal Graph) 參考: https://en.wikipedia.org/wiki/Chordal_graph



說明:

1. Windows 系統中, 先安裝 Rtools 編譯工具, 此工具可以下載並安裝相關套件.

  • 連結至 Rtools 網站, 例如: http://cran.csie.ntu.edu.tw/bin/windows/Rtools/
  • 下載最新版本 Rtools35.exe (約104MB)
  • 安裝 Rtools 軟體, 全部採用預設值安裝,
    例: 安裝目錄為 C:\Rtools
    例: Add rtools to system PATH 選項記得打勾

2. 安裝 devtools 套件, 使用 install.packages("devtools")

3. 安裝 chorddiag 套件進行弦圖資料視覺化, 此套件非 CRAN 標準套件, 可使用 devtools 套件中的 install_github 函數進行套件之安裝.

安裝指令 devtools::install_github("mattflor/chorddiag")

參考網站: https://github.com/mattflor/chorddiag

套件使用時, 輸入資料必須採用矩陣資料 (matrix), 且行與列的個數須相同.

繪製弦圖函數為 chorddiag.

R程式碼:

# title: chord diagram
# date: 2019.10.13

# 安裝 Windows 版本 Rtools
# http://cran.csie.ntu.edu.tw/bin/windows/Rtools/
# 安裝時, Add rtools to system PATH 記得打勾

# 安裝 devtools 套件
install.packages("devtools")

# 安裝 chorddiag 套件
devtools::install_github("mattflor/chorddiag")

# 載入套件
library(chorddiag)

# 建立資料
students <- as.matrix(data.frame(
  文學 = c(68, 75, 65, 97),
  通識 = c(96, 75, 85, 60),
  數學 = c(65, 61, 70, 80),
  體育 = c(66, 79, 85, 61)))

row.names(students) <- c("班級A", "班級B", "班級C", "班級D")

# 繪製弦圖
chorddiag(students)

# 視覺化進階優化1
chorddiag(students, type = "bipartite")

# 視覺化進階優化2
chorddiag(students, type = "bipartite", showTicks = FALSE)

# 視覺化進階優化3
chorddiag(students, type = "bipartite", showTicks = FALSE, groupnameFontsize = 14, groupnamePadding = 10, margin = 90)
# end

2016年9月25日 星期日

R軟體與Shiny Web應用程式設計

課程名程:R軟體與Shiny Web應用程式設計
上課日期:2016年10月22,23日
參考網址:http://w3.iiiedu.org.tw/coursedetail.php?id=MSA331I&l=12&c=MSA331I1601
本課程採用R語言做為Web服務平台,使學員熟悉使用shiny套件建立Web化服務應用,歡迎報名參加。
# end

2016年9月16日 星期五

中文網頁表格擷取,亂碼處理

Problem:

本篇文章討論如何使用R下載網頁的表格資料, 再進行後續處理.

Analysis:

# part 1 設定R語系為C, 以配合中文編碼使用

本例考量 RWEPA 個人簡介(About) 網頁 (http://web.ydu.edu.tw/~alan9956/02person.htm), 該網頁包括專題演講表格, 該表格包括編號,日期,主題,單位/地點,時數等5個欄位, 在R環境中, 可使用 XML 套件的 readHTMLTable 函數讀取網頁表格, 另因中文編碼考量, 先設定 locate, R程式如下:

Sys.setlocale(category="LC_ALL", locale="C")
Sys.getlocale()

# part 2 載入套件,讀取網頁資料

準備使用 XML 套件的 readHTMLTable 函數, 使用時記得加上  encoding="big5", 結果有5個表格, 其中第1個表格是使用的資料集, 因此將 tmp串列的第1個元素取出, 設定 train <- tmp[[1]], R程式如下:

library(XML) # readHTMLTable 函數
# IE: F12 --> line 7: <meta http-equiv=Content-Type content="text/html; charset=big5"> 
# 觀察原始網頁採用 big5, 因此encoding參數設定為 big5
urls <- "http://web.ydu.edu.tw/~alan9956/02person.htm"
tmp <- readHTMLTable(urls, stringsAsFactors = FALSE, encoding="big5")
length(tmp) # length=5
train <- tmp[[1]] # 139*5

# part 3 資料整理

train[1,2] # 顯示亂碼
iconv(train[1,2], "UTF-8", "BIG-5") # 顯示正常

# 中文編碼轉換
train <- as.data.frame(lapply(train, function(x) iconv(x, "UTF-8", "BIG-5")))
names(train) <- c("id", "traindate", "program", "location", "hours")
head(train)

# 匯出資料
write.table(train, file="C:/rdata/train.txt", row.names=FALSE)
# save(train, file="C:/rdata/train.RData") # 亦可儲存成 RData 格式

# R程式:

# title: RWEPA - 讀取網頁表格教育訓練
# date: 2016.9.16

# part 1 設定R語系為C, 以配合中文編碼使用
Sys.setlocale(category="LC_ALL", locale="C")
Sys.getlocale()

# part 2 載入套件,讀取網頁資料
library(XML) # readHTMLTable 函數

# IE: F12 --> line 7: <meta http-equiv=Content-Type content="text/html; charset=big5"> 
# 觀察原始網頁採用 big5, 因此encoding參數設定為 big5

urls <- "http://web.ydu.edu.tw/~alan9956/02person.htm"
tmp <- readHTMLTable(urls, stringsAsFactors = FALSE, encoding="big5")

length(tmp) # length=5
train <- tmp[[1]] # 139*5

# part 3 資料整理
train[1,2] # 顯示亂碼
iconv(train[1,2], "UTF-8", "BIG-5") # 顯示正常

# 中文編碼轉換
train <- as.data.frame(lapply(train, function(x) iconv(x, "UTF-8", "BIG-5")))
names(train) <- c("id", "traindate", "program", "location", "hours")
head(train)

# 匯出資料
write.table(train, file="C:/rdata/train.txt", row.names=FALSE)

# save(train, file="C:/rdata/train.RData") # 亦可儲存成 RData 格式

R程式執行結果:


# end

2015年4月30日 星期四

2015 資料科學與產業應用工作坊


「2015 資料科學與產業應用工作坊」緣起與展望

資料科學(Data Science)運用統計學、機器學習與電腦科學,以創建預測模型。它是一門比統計學更寬更廣的跨學科新興領域,它管控從假說與資料,到可行動方案的整個資料蒐集、分析與結果呈現之流程。資料科學的許多理論基礎來自於統計學,但就工程面而言,資料科學大幅受到資訊科技的影響,例如:資料庫理論、平行運算理論、資料串流技術與資料倉儲技術等。

資料科學家負責取得資料、操弄資料、選擇建模技術、撰寫程式碼、核驗與呈現結果等任務。面對當前多樣化的資料來源,如何有效發展資料視覺化設計、應用機器學習與文字探勘分析技術、以及建構互動式分析平台,已經成為許多產業重要且迫切的需求。

英國詩人William Blake曾說:『一沙一世界,一花一天堂,雙手握無限,剎那即永恆』。資料科學家們應從基本功做起,就身邊垂手可得的easy data,進行有意義的資料分析(meaning data analysis),逐步體會由小看大的意境。2015資料科學與產業應用工作坊早上以兩場R語言教程開場,下午進行資料視覺化、文字資料探勘與互動式界面設計等三場案例實作工作坊。全程安排具備豐富資料分析實戰經驗的顧問團隊,帶領與會人士玩轉各式資料集,引導使用者深入瞭解資料背後的意涵,進而洞悉其商業價值,釐定更精準的決策。

活動日期: 2015年06月05日(星期五)  09:00AM ~ 16:50PM

第一階段早鳥報名:(05/04~05/10) 報名費 $2500元
第二階段早鳥報名:(05/11~05/20) 報名費 $3000元
最後階段原價報名:(05/21~05/27) 報名費 $5000元

活動地點:中華電信股份有限公司   板橋電信學院G701室

主辦單位:臺灣資料科學與商業應用協會、中華R軟體學會、國立臺北商業大學資訊與決策科學研究所資料科學應用研究中心

協辦單位:中華電信學院、德明財經科技大學、財團法人中華民國電腦技能基金會、台北市電腦商業同業公會、東吳巨量資料管理學院、中國電機工程學會

2013年1月11日 星期五

shiny package 網路應用

Updated: 2021.8.16

shiny相關套件約86個

1. 簡介

R從 2000年發展出第1個版本, 至今2013年1月已將近13年. 最新版本(2013年1月)為 2.15.2, 早期以統計應用為主, 目前如 RWEPA bolgger 首頁所提及已包括29大類別, 上自天文, 下至地理都可應用. 隨著資訊科技技術的進步, 未來將朝向WEB化的應用與客製化應用服務.

目前執行R軟體專案, 大部份會在個人電腦上執行, 如果希望將結果分享給其他人員, 一般會直接將R程式檔複製給他人. 相反地, 如果可以在WEB上直接應用(例如: 連結至某個網頁, 該網頁提供資料上傳與線上整合服務), 則 R的應用相信更可向上提昇. 目前已有部份套件已達到上述相似功能, 參考 R FAQ - 4. R Web Interfaces, 近期有個 shiny package 提供更方便, 互動式網路應用, 當使用者在網頁上更新資料時, 其結果"立刻"在WEB上呈現出來. shiny 其英文簡介如下: 

Easy web applications in R

Shiny makes it super simple for R users like you to turn analyses into interactive web applications that anyone can use. Let your users choose input parameters using friendly controls like sliders, drop-downs, and text fields. Easily incorporate any number of outputs like plots, tables, and summaries.
No HTML or JavaScript knowledge is necessary. If you have some experience with R, you're just minutes away from combining the statistical power of R with the simplicity of a web page. 

重點在於無需 HTML , JavaScript 等知識即可使用.

2. 使用步驟

1. 下載 shiny 套件, install.packages("shiny")
2. 下載 shiny 套件之後, "C:\Program Files\R\R-2.15.2\library\shiny\examples" 目錄包括 01_hello ... 10_download 等10個內建範例.
3. 載入 shiny 套件 library(shiny)
4. 執行範例 runExample("01_hello")
結果 http://localhost:8100/ , IE瀏覽器執行有問題, 直接將網址複製到 Google Chrome, 結果如下圖所示:


執行 shiny "01_hello" 範例R程式碼:

3. shiny  程式碼

shiny 執行時有二個檔案, 例如: 在"C:\Program Files\R\R-2.15.2\library\shiny\examples\01_hello" 資料夾中有二個檔案, 分別是 "server.R" , "ui.R".


程式說明:
server.R 定義伺服器端執行的執行功能, 經由 shinyServer 函數定義其功能, reactivePlot 執行互動式繪圖功能, 最後經由 hist 指令繪出直方圖, 結果顯示於右側.

ui.R 定義左側使用者輸入介面, sidebarPanel 函數可由使用者調整樣本大小. 其中 sliderInput("obs", "Number of observations:", min = 0, max = 1000, value = 500) 之意義如下:

(儲存樣本數的變數名稱, 標題名稱 , 最小值, 最大值, 預設值).

4. shiny  應用篇

看完上述說明相信大定家很想試一下其功能, 以下範例說明如何例用 curve 函數繪製曲線.
注意: 
1. 直接採用 curve(input$plot.function, input$xlimit.lower, input$xlimit.upper) 會有錯誤.
2. 正確須採用 do.call 函數
do.call("curve",list(expr=parse(text=input$plot.function),
                         from=input$xlimit.lower,
                         to=input$xlimit.upper)) 



執行結果