R可视乎|交互式图形库 Plotly

2021-11-19 11:37:33 浏览数 (1)

之前公众号介绍过的绘图工具:如何快速画出美观的图形?,图表这么多,该用哪种展示我的数据呢?使用的语言都为 python,对于一些 R 语言爱好者就不是那么方便啦,今天小编为大家介绍一个支持 R 语言的开源图形库—— Plotly,赶紧收藏起来,迅速 get 绘制美观实用的图形技能吧~

简介

Plotly 支持的语言有 Python、 R、Julia、Javascript、ggplot2、F#、MATLAB,以及 Dash,可以根据个人需要进行选择。

本文先介绍 plotly 的 R 包用法,网站左侧有个图形示例导航栏:

图形示例

Plotly 最大的特点是绘制出来的图形都是交互式的,所给示例(图形示例的网址:https://plotly.com/r/)除了常见的线图、饼图之外,还提供了一些机器学习模型结果的可视化,这样再有建模需求时也能对模型结果进行高质量地展示啦,下图为部分绘图示例:

机器学习

子图

R 包安装

在 R Studio 里使用 Plotly 包时,需要先进行安装并加载:

代码语言:javascript复制
install.packages("plotly")
library(plotly)

绘图实战

当自变量有多个时,R 自带的绘图函数 plot 无法对其进行可视化,这时可以利用plotly包中的plot_ly函数对多元回归平面进行可视化。下面以 iris 数据集为例,先加载所需要的 R 包:

代码语言:javascript复制
#加载包
library(reshape2)
library(tidyverse)
library(tidymodels)
library(plotly)
#install.packages("kernlab")
library(kernlab)
#install.packages("pracma")
library(pracma) #为了在曲面上显示网格线
data(iris)

选择 Sepal.Width 、Sepal.Length 作为自变量,因变量为 Petal.Width,

代码语言:javascript复制
#选择自变量和因变量
mesh_size <- .02
margin <- 0
X <- iris %>% select(Sepal.Width, Sepal.Length)
y <- iris %>% select(Petal.Width)

构造回归模型,选择 rbf 核函数进行映射:

代码语言:javascript复制
model <- svm_rbf(cost = 1.0) %>% 
  set_engine("kernlab") %>% 
  set_mode("regression") %>% 
  fit(Petal.Width ~ Sepal.Width   Sepal.Length, data = iris)

建立坐标轴范围

代码语言:javascript复制
x_min <- min(X$Sepal.Width) - margin
x_max <- max(X$Sepal.Width) - margin
y_min <- min(X$Sepal.Length) - margin
y_max <- max(X$Sepal.Length) - margin
xrange <- seq(x_min, x_max, mesh_size)
yrange <- seq(y_min, y_max, mesh_size)
xy <- meshgrid(x = xrange, y = yrange)
xx <- xy$X
yy <- xy$Y
dim_val <- dim(xx)
xx1 <- matrix(xx, length(xx), 1)
yy1 <- matrix(yy, length(yy), 1)
final <- cbind(xx1, yy1)
pred <- model %>%
  predict(final)

pred <- pred$.pred
pred <- matrix(pred, dim_val[1], dim_val[2])

利用plot_ly函数绘图:

代码语言:javascript复制

fig <- plot_ly(iris, x = ~Sepal.Width, y = ~Sepal.Length, z = ~Petal.Width ) %>% 
  add_markers(size = 5) %>% 
  add_surface(x=xrange, y=yrange, z=pred, alpha = 0.65, type = 'mesh3d', name = 'pred_surface')
fig

结果展示

可以看到 Plotly 绘制出来的图形,不仅美观,而且是可以交互的,这个包还提供许多非常有用的例子,大家可以自行探索一下~

结语

觉得本文有帮助到你,那就请多多给小编点赞吧,小编再继续努力为大家挖掘好用的科研工具~

0 人点赞