• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • 【数据故事】使用R进行交互式数据可视化

      【数据故事】使用R进行交互式数据可视化

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2018年6月4日
      测试开头

      【数据故事】使用R进行交互式数据可视化


      笔者邀请您,先思考:

      1 交互式可视化有什么应用场景?

      2 您会用R工具做交互式可视化?

      数据可视化与科学一样是一门艺术。 有很多工具可用于在R中生成可视化。一些受欢迎的工具是ggplot和ggvis。 虽然ggplot是创建静态可视化的惊人工具,但当您需要创建交互式数据可视化时,它的性能往往不足。 ggvis也是如此。 这是Plotly积极派上用场的地方。 Plotly可以轻松创建丰富的交互式数据可视化,而无需掌握CSS或Javascript的知识。

      什么是Plotly?

      Plotly是建立在可视化库(如HTML,D3.js和CSS)之上的数据可视化工具。 它是使用Django框架创建的。 它与多种语言兼容。 由plotly生成的图表可以使用plotly的API在线托管。

      Plotly的优点:

      • 在不知道D3.js的语言的情况下,使用D3.js轻松构建可视化

      • 兼容多种语言

      • Plotly生成的图表可以在线托管,以便其他人可以访问它们

      • 使用Chart Studio创建的图表不需要编码,因此非编码人员可以轻松使用它们

      • Plotly的语法很简单

      • Plotly与R上的ggplot2兼容

      Plotly的缺点:

      • 使用社区版Plotly创建的图表可供所有人访问

      • 限制每日API调用

      在R中使用Plotly构建交互式数据可视化

      正如我们已经看过Plotly的优点和缺点一样。 我们开始构建交互式数据可视化。 首先要做的是安装Plotly

      if(!require(plotly))
      {
       install.packages("plotly")
       require(plotly)
      }

      在创建图表之前,让我们看看用于创建可视化的语法
      plot_ly( x, y, type, mode, color, size)

      这里 –

      • x = x轴的值

      • y = y轴的值

      • type =指定需要创建的图的类型。 例如 – ‘scatter’,’box’或’histogram’

      • mode =绘图需要表示的模式

      • color =表示数据点的颜色

      散点图

      让我们从交互式数据可视化选项中创建一个散点图类型开始。 我们将使用iris数据集(驻留在R中,无需加载外部文件)创建散点图。 我们附上iris数据集并查看前几行。 此外,我们将使用glimpse函数查看数据的结构。

      library(dplyr)
      attach(iris)
      head(iris)
      glimpse(iris)
      【数据故事】使用R进行交互式数据可视化

      查看数据,我们可以观察到有四个连续的变量,而物种是分类的。 创建散点图的语法是

      sca <- plot_ly(
       x = ~ Sepal.Length,
       y = ~ Petal.Length,
       type = "scatter"
      )
      layout(
       sca,
       title = "Scatter Plot",
       xaxis = list(title = 'Sepal length'),
       yaxis = list(title = 'Petal length')
      )
      【数据故事】使用R进行交互式数据可视化

      布局命令用于定义图的标题,x轴和y轴。
      让我们通过添加颜色添加更多图层,以便区分物种彼此。

      sca <- plot_ly(
       x = ~Sepal.Length,
       y = ~Petal.Length,
       type = 'scatter',
       color = ~Species
      )
      layout(
       sca,
       title = 'Scatter Plot',
       xaxis = list(title = 'Sepal length'),
       yaxis = list(title = 'Petal length')
      )
      【数据故事】使用R进行交互式数据可视化

      现在图已经形成,我们可以 –

      • 放大图

        【数据故事】使用R进行交互式数据可视化
      • 重置轴

      • 做盒子选择,套索选择

      【数据故事】使用R进行交互式数据可视化
      • 将图下载为png

      让我们尝试添加大小变量以使散点图显示Sepal长度的读数。

      sca <- plot_ly(
       x = ~Sepal.Length,
       y = ~Petal.Length,
       type = 'scatter',
       color = ~Species,
       size = ~Sepal.Length
      )
      layout(
       sca,
       title = 'Scatter Plot',
       xaxis = list(title = 'Sepal length'),
       yaxis = list(title = 'Petal length')
      )
      【数据故事】使用R进行交互式数据可视化

      从上图可以看出,随着萼片长度的读数趋于增加,标记趋于增加。

      折线图和时间序列

      为了创建折线图,我们将使用空气质量数据集

      attach(airquality)
      glimpse(airquality)
      head(airquality)
      【数据故事】使用R进行交互式数据可视化

      查看数据的结构,可以看出所有变量都是比率/间隔类型。 我们将用时间序列绘制Solar.R值。

      ti <- plot_ly(
       y = ~Solar.R,
       type = 'scatter',
       mode = 'lines'
      )
      layout(
       ti,
       title = 'Time Series',
       yaxis = list(title = 'Solar Reading')
      )
      【数据故事】使用R进行交互式数据可视化

      让我们在上面的图表中添加标记

      ti <- plot_ly(
       y = ~Solar.R,
       type = 'scatter',
       mode = 'lines+markers'
      )
      layout(
       ti,
       title = 'Time Series',
       yaxis = list(title = 'Solar Reading')
      )
      【数据故事】使用R进行交互式数据可视化

      直方图

      接下来我们从iris数据集创建直方图。 我们使用Sepal长度来创建计数。

      hist <- plot_ly(
       x = ~Sepal.Length,
       type = 'histogram'
      )
      layout(
       hist,
       title = 'Histogram',
       xaxis = list(title = 'Sepal length'),
       yaxis = list(title = 'count')
      )
      【数据故事】使用R进行交互式数据可视化

      条形图

      用iris数据我们创建一个条形图。

      bar <- plot_ly(
       x = ~Sepal.Length,
       type = 'bar'
      )
      layout(
       bar,
       title = 'Bar Plot',
       xaxis = list(title = 'Species'),
       yaxis = list(title = 'count')
      )
      【数据故事】使用R进行交互式数据可视化

      这只是一个普通的条形图,我们可以创建堆积的条形图。 为此我们创建一些自定义数据。

      Animals <- c("giraffes", "orangutans", "monkeys")
      SF_Zoo <- c(20, 14, 23)
      LA_Zoo <- c(12, 18, 29)
      data <- data.frame(Animals, SF_Zoo, LA_Zoo)
      p <- plot_ly(
       data,
       x = ~Animals,
       y = ~SF_Zoo,
       type = 'bar',
       name = 'SF Zoo'
      ) %>%
       add_trace(y = ~LA_Zoo, name = 'LA Zoo')
      layout(p,yaxis = list(title = 'Count'), barmode = 'stack')
      【数据故事】使用R进行交互式数据可视化

      带散点图的折线图

      因为我们已经分别创建了折线图和散点图。 现在是时候添加这两个以创建一个包含这两个图表的图表。 为了完成这个,我们需要使用命令add_trace。 首先让我们创建一些数据。

      • trace_1从均值为0的正态分布中创建100个随机值

      • trace_2从均值为-5的正态分布中创建100个随机值

      数据框的头部

      head(data)
      plot_ly(
       data,
       x = ~x,
       y = ~trace_1,
       type = 'scatter',
       mode = 'lines+markers', name = 'trace1'
      ) %>%
       add_trace(
         y = ~trace_2,
         mode = 'markers',
         name = 'trace2'
       )
      【数据故事】使用R进行交互式数据可视化

      箱子图

      Plotly也可以用来创建出色的箱子图。 使用来自mtcars的数据,我们为马力值创建一个箱形图。

      attach(mtcars)
      glimpse(mtcars)
      box <- plot_ly(
       y = ~hp,
       type = 'box'
      )
      layout(
       box,
       title = 'Box Plot',
       yaxis = list(title = 'Horse Power')
      )
      【数据故事】使用R进行交互式数据可视化

      热图

      让我们开始创建一些更高级的交互式数据可视化,Plotly从热图开始。对于这个特定练习,我们将使用volcano数据集。

      data(volcano)
      glimpse(volcano)
      dim(volcano)
      plot_ly(z = ~volcano,type = 'heatmap')
      【数据故事】使用R进行交互式数据可视化

      3D散点图

      这是迄今为止Plotly中最酷的交互式数据可视化技巧之一。 对于这张图表,我们将再次使用iris数据集。 并定义三个轴的值。

      plot_ly(
       x = ~Sepal.Length,
       y = ~Sepal.Width,
       z = ~Petal.Length,
       type="scatter3d",
       mode = 'markers',
       size = ~Petal.Width,
       color = ~Species
      )
      【数据故事】使用R进行交互式数据可视化

      结论

      通过阅读文章,您现在应该熟悉R中Plotly的工作情况。Plotly广泛用于仪表板以创建交互式数据可视化。 它在交互方面具有超过ggplot的优势,但可以与ggplot一起使用来创建要推送到云中的图。 那么,现在是时候让你们继续前进,并开始用Plotly创建出色的可视化效果。

      完整代码

      # 加载R包
      if(!require(plotly))
      {
       install.packages("plotly")
       require(plotly)
      }
      library(dplyr)
      # 数据查看
      attach(iris)
      head(iris)
      glimpse(iris)
      # 散点图
      sca <- plot_ly(
       x = ~ Sepal.Length,
       y = ~ Petal.Length,
       type = "scatter"
      )
      layout(
       sca,
       title = "Scatter Plot",
       xaxis = list(title = 'Sepal length'),
       yaxis = list(title = 'Petal length')
      )
      sca <- plot_ly(
       x = ~Sepal.Length,
       y = ~Petal.Length,
       type = 'scatter',
       color = ~Species
      )
      layout(
       sca,
       title = 'Scatter Plot',
       xaxis = list(title = 'Sepal length'),
       yaxis = list(title = 'Petal length')
      )
      attach(airquality)
      glimpse(airquality)
      head(airquality)
      ti <- plot_ly(
       y = ~Solar.R,
       type = 'scatter',
       mode = 'lines'
      )
      layout(
       ti,
       title = 'Time Series',
       yaxis = list(title = 'Solar Reading')
      )
      ti <- plot_ly(
       y = ~Solar.R,
       type = 'scatter',
       mode = 'lines+markers'
      )
      layout(
       ti,
       title = 'Time Series',
       yaxis = list(title = 'Solar Reading')
      )
      # 直方图
      hist <- plot_ly(
       x = ~Sepal.Length,
       type = 'histogram'
      )
      layout(
       hist,
       title = 'Histogram',
       xaxis = list(title = 'Sepal length'),
       yaxis = list(title = 'count')
      )
      # 条形图
      bar <- plot_ly(
       x = ~Sepal.Length,
       type = 'bar'
      )
      layout(
       bar,
       title = 'Bar Plot',
       xaxis = list(title = 'Species'),
       yaxis = list(title = 'count')
      )
      Animals <- c("giraffes", "orangutans", "monkeys")
      SF_Zoo <- c(20, 14, 23)
      LA_Zoo <- c(12, 18, 29)
      data <- data.frame(Animals, SF_Zoo, LA_Zoo)
      p <- plot_ly(
       data,
       x = ~Animals,
       y = ~SF_Zoo,
       type = 'bar',
       name = 'SF Zoo'
      ) %>%
       add_trace(y = ~LA_Zoo, name = 'LA Zoo')
      layout(p,yaxis = list(title = 'Count'), barmode = 'stack')
      trace_1 <- rnorm(100, mean = 0)
      trace_2 <- rnorm(100, mean = -5)
      x <- c(1:100)
      data <- data.frame(x, trace_1, trace_2)
      head(data)
      plot_ly(
       data,
       x = ~x,
       y = ~trace_1,
       type = 'scatter',
       mode = 'lines+markers', name = 'trace1'
      ) %>%
       add_trace(
         y = ~trace_2,
         mode = 'markers',
         name = 'trace2'
       )
      # 箱子图
      attach(mtcars)
      glimpse(mtcars)
      box <- plot_ly(
       y = ~hp,
       type = 'box'
      )
      layout(
       box,
       title = 'Box Plot',
       yaxis = list(title = 'Horse Power')
      )
      # 热图
      data(volcano)
      glimpse(volcano)
      dim(volcano)
      plot_ly(z = ~volcano,type = 'heatmap')
      plot_ly(
       x = ~Sepal.Length,
       y = ~Sepal.Width,
       z = ~Petal.Length,
       type="scatter3d",
       mode = 'markers',
       size = ~Petal.Width,
       color = ~Species
      )

      作者:
      Rohit, 
      Vishnu Reddy, 
      Saneesh Veetil 
      and Chaitanya Sagar
      原文链接:
      http://www.data-mania.com/blog/interactive-data-visualizations/

      版权声明:作者保留权利,严禁修改,转载请注明原文链接。

      数据人网是数据人学习、交流和分享的平台http://shujuren.org 。专注于从数据中学习到有用知识。
      平台的理念:人人投稿,知识共享;人人分析,洞见驱动;智慧聚合,普惠人人。
      您在数据人网平台,可以1)学习数据知识;2)创建数据博客;3)认识数据朋友;4)寻找数据工作;5)找到其它与数据相关的干货。
      我们努力坚持做原创,聚合和分享优质的省时的数据知识!
      我们都是数据人,数据是有价值的,坚定不移地实现从数据到商业价值的转换!

      加入数据人圈子或者商务合作,请添加笔者微信。

      【数据故事】使用R进行交互式数据可视化


      点击阅读原文,进入数据人网,获取数据知识。


      公众号推荐:

      链达君,专注于分享区块链内容。

      【数据故事】使用R进行交互式数据可视化

      脚印英语,专注于分享英语口语内容。

      【数据故事】使用R进行交互式数据可视化


      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      linux炫酷小技能--批量创建目录和文件
      2018年6月4日

      下一篇文章

      生信小白第26天--初识文本处理三剑客
      2018年6月5日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?