在進行資料分析時,時常會透過畫折線圖、散佈圖等等將資料視覺化的動作,方便分析者做觀察資料。然而透過圖片來瞭解資料,會出現無法得知精準數字,需要回頭檢視資料找特定筆數值,有時候會讓小編覺得有點麻煩。今天介紹的 Plotly 使用的是 ggplot2 的語法畫圖,並且可以將游標移到想知道的點,就會標出該點的 (x,y) 資料。同時 Plotly 還可以做到即時的縮放局部圖片與旋轉,想要做簡報或展示也是相當方便的工具。
R 套件: plotly
plotly 以 ggplot2 為基礎的套件,只要能夠使用 ggplot2 畫出的圖片,就可以使用 plotly 輸出成像互動網頁般的圖片,也可以透過 Rstudio 上傳到 Rstudio 的免費伺服器,分享或另作其他用途,安裝 plotly。
install.packages(“plotly”) library(plotly)
2D 圖片
這裡以散佈圖和折線圖為例,使用的資料為 R 內建的 iris 資料繪製散佈圖,使用隨機常態變數示範。
散佈圖
這裡使用 x 軸為 Petal.Length,y 軸為 Petal.Width,並且使用不同品種使用不同顏色的點。
http://rpubs.com/longjian/266081
iris <- iris plot_ly(iris, x = ~Petal.Length, y = ~Petal.Width, type = "scatter", color = ~Species)
折線圖
這裡創造 100 個來自常態 N(0,1) 的隨機變數繪製折線圖。
http://rpubs.com/longjian/266092
t <- rnorm(100) x <- 1:100 dat <- data.frame(x,t) plot_ly(dat, y = ~t, type = "scatter", mode = "lines")
3D 圖片
這裡示範繪製二元常態分配 x ~ N(0,1), y ~N(0,1), rho = 0 的曲面,3D 的圖片可以隨著游標標出水平線,而且還可以拖曳旋轉。
http://rpubs.com/longjian/266100
x <- seq(-3,3,0.1) y <- seq(-3,3,0.1) fxy <- function(x,y,r) { 1/(2*pi) * exp( -( x^2 + y^2)/2 ) } z <- outer(x,y,fxy) h <- list( x=x, y=y, z= abs(z)) plot_ly(x = h$x, y = h$y, z = h$z) %>% add_surface()
結論
plotly 繼承了 ggplot2 漂亮的繪圖效果,並且加上類似 D3.js 的效果,讓對寫網頁完全不懂的小編來說,是一大福音。可以用這種互動式圖片解析資料,說明資料背後的故事,透過這種互動,讓自己的講解更加平易近人。是非常推薦的工具。