之前公众号介绍过的绘图工具:如何快速画出美观的图形?,图表这么多,该用哪种展示我的数据呢?使用的语言都为 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 包时,需要先进行安装并加载:
install.packages("plotly") library(plotly)
绘图实战
当自变量有多个时,R 自带的绘图函数 plot 无法对其进行可视化,这时可以利用plotly包中的plot_ly函数对多元回归平面进行可视化。下面以 iris 数据集为例,先加载所需要的 R 包:
#加载包 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,
#选择自变量和因变量 mesh_size <- .02 margin <- 0 X <- iris %>% select(Sepal.Width, Sepal.Length) y <- iris %>% select(Petal.Width)
构造回归模型,选择 rbf 核函数进行映射:
model <- svm_rbf(cost = 1.0) %>% set_engine("kernlab") %>% set_mode("regression") %>% fit(Petal.Width ~ Sepal.Width + Sepal.Length, data = iris)
建立坐标轴范围
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函数绘图:
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 绘制出来的图形,不仅美观,而且是可以交互的,这个包还提供许多非常有用的例子,大家可以自行探索一下~

![T]W{4~2Q9}X`T2O)Y6R7CZB.png T]W{4~2Q9}X`T2O)Y6R7CZB.png](https://ucc.alicdn.com/pic/developer-ecology/041f24044e214e728f54e46586edbe74.png?x-oss-process=image/resize,w_1400/format,webp)

![3NFB%68TX[)}1H8TJ(@]ZYK.png 3NFB%68TX[)}1H8TJ(@]ZYK.png](https://ucc.alicdn.com/pic/developer-ecology/2813072a521b41f48c44165e4bea3e17.png?x-oss-process=image/resize,w_1400/format,webp)

![F6MZZ58G~X]%RQZ_UFEGOSR.png F6MZZ58G~X]%RQZ_UFEGOSR.png](https://ucc.alicdn.com/pic/developer-ecology/7c157c056435422a90439be2a2d38374.png?x-oss-process=image/resize,w_1400/format,webp)