웹상에서 interactive plot을 구현할 때 D3.js 등을 쓰거나 plotly등을 쓸수 있다. R에서는 plotly, rbokeh 또는 googleVis 등을 쓰면 interactive plot을 구현할 수 있는데 최근 나온 ggiraph 패키지는 htmlwidgets을 이용하여 ggplot2로 만든 plot을 interactive plot으로 바꾸어준다. ggplot2의 모든 기능이 가능한 것은 아니고 geom_point, geom_polygon, geom_map, geom_path, geom_rect, geom_text, geom_segment등이 가능하다. 다음 그림은 geom_point를 geom_point_interactive로 바꾸어 interactive plot을 구현한 예이다. 커서를 점 위로 올리면 interaction을 볼 수 있다.

위의 그림을 그린 코드는 다음과 같다.

require(ggplot2)
require(ggiraph)

mtcars$name=rownames(mtcars)
mtcars$tooltip=paste0(rownames(mtcars),"<br>mpg=",mtcars$mpg)
p<-ggplot(aes(x=wt,y=mpg,color=factor(cyl),tooltip=tooltip,data_id=name),data=mtcars)+geom_point_interactive(size=3)
tooltip_css <- "background-color:white;font-style:italic;padding:10px;border-radius:10px 20px 10px 20px;"
ggiraph(code = {print(p)},tooltip_extra_css = tooltip_css,hover_css="fill:orange;r:6px;cursor:pointer")

지난번 올린 PieDonut plot도 interactive version으로 바꾸어 보았다.

source("ggPieDonut2.R")

ggPieDonut(data=acs,pies="Dx",donuts="smoking",interactive=TRUE)

ggDonut(data=acs,donuts="smoking",interactive=TRUE)

인구피라미드의 경우도 interactive version으로 바꾸어 보았다.

source("ggBidirectionalBar2.R")

PopPyramid("KS",2016,interactive=TRUE)

Radar chart도 interactive version으로 바꾸어 보았다.

source("ggRadar2.R")
ggRadar(iris,interactive=TRUE)

ggRadar(iris,groupvar="Species",autorescale=TRUE,interactive=TRUE)

ggRadar(mtcars,groupvar="cyl",autorescale=TRUE,interactive=TRUE)

require(moonBook)
ggRadar(data=acs,
         autorescale=TRUE,groupvar="sex",interactive=TRUE)

ggRadar2.R, ggBidirectionalBar2.R,ggPieDonut2.R의 소스는 웹R에 공개할 예정이다.