在 R 中使用 Plotly 创建交互式动态图表

Plotly 是一款在线分析和数据可视化工具,并为 Python、R、MATLAB 等主流编程语言提供 API 接口

在 R 中安装 Plotly

  • 通过 CRAN 安装:install.packages("plotly")
  • 通过 Github 安装最新版本:devtools::install_github("ropensci/plotly")

用 plot_ly 绘制离线图表

  • 通过 plot_ly() 函数直接绘制离线动态图表,然后在 Rstudio Viewer 中查看
    1
    2
    library(plotly)
    plot_ly(midwest, x = ~percollege, color = ~state, type = "box")

生成在线动态图表

  • Plotly 的官网注册一个账号
  • 设置中生成一个 API Key,并在 R 中进行如下设置

    1
    2
    Sys.setenv("plotly_username"="your_plotly_username")
    Sys.setenv("plotly_api_key"="your_api_key")
  • 为了避免每次打开一个 R Session 都要重新进行以上配置,可以将这两行代码添加到 R 安装目录的 \etc\Rprofile.site 文件中,这样每次开启 R 就会自动进行配置

  • 设置好之后,通过 plotly_POST 命令将绘图上传至 Plotly 网站,效果参见此链接
    1
    2
    p <- plot_ly(midwest, x = ~percollege, color = ~state, type = "box")
    plotly_POST(p, filename = "midwest-boxplots")

将 Plotly 嵌入 Html 中

  • 点击 Plotly 图表上的分享按钮,复制 Embed 下的 iframe 或 Html 代码,嵌入网页源码即可,或者直接写入 markdown 中
  • 居中图片使用 <center> 标签,宽度和高度也可以在 iframe 中直接设置,效果如下


  • iframe 的配置参数如下表

将 ggplot2 的绘图转换成 Plotly

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
library(ggplot2)
library(plotly)
set.seed(100)
d <- diamonds[sample(nrow(diamonds), 1000), ]
p <- ggplot(data = d, aes(x = carat, y = price)) +
geom_point(aes(text = paste("Clarity:", clarity)), size = .5) +
geom_smooth(aes(colour = cut, fill = cut)) + facet_wrap(~ cut)
p <- ggplotly(p)
# Create a shareable link to your chart
chart_link = plotly_POST(p, filename="ggplot2-plotly-example")
chart_link



>


将 Plotly D3.js 插入 Powerpoint/Excel

  • 通过 Office 应用商店安装 Plotly D3.js 插件
  • 在 Powerpoint/Excel 中通过加载项插入 Plotly 图标的 https 分享链接即可

Reference