R语言(五) Plotly绘图基本命令介绍

前文回顾:R语言ggplot基本语法介绍

在R语言中,除ggplot外,plotly也是一大常用的绘图包,其与ggplot的区别在于它的可交互性,本文主要整理其基本绘图命令。

一、基本介绍

1.1 绘图语法

plotly插件包绘图方式主要分两种:一是将ggplot对象直接转为plotly对象;二是直接使用初始化plotly函数进行绘制

  • 直接转换
library(ggplot2)
library(plotly)

p<-ggplot(data=iris,
          aes(x=Sepal.Length,
              y=Petal.Length,
              colour=Species))+
   geom_point()

ggplotly(p)

在这里插入图片描述

交互式体现:可通过鼠标查看数据标签、点击右侧的图例可控制散点显隐

  • 基本语法
plot_ly(data=iris,
       x = ~Sepal.Length,
       y = ~Petal.Length,
       type='scatter')%>%
  layout(title='iris scatter',
         yaxis=list(zeroline=FALSE),
         xaxis=list(zeroline=FALSE))

在这里插入图片描述

1.2 绘图原理

R语言环境下R语言代码转为plotly包图形的关键在于plotly.js所需的json格式数据的转换,主要经历以下三个步骤:
1、使用plotly_build()函数将R语言代码转为R语言列表
2、使用plotly_json()函数将R语言列表转换为JSON格式数据传给plotly.js
3、由plotly.js根据输入的数据生成plotly插件包图形

二、绘图示例

plotly主要参数含义
type绘图类型
mode绘图名称
name图例名称
2.1 条形图
iris_data<-data.frame(Species=names(tapply(iris$Sepal.Length,
                                      iris$Species,mean)),
                 Sepal.Length=c(tapply(iris$Sepal.Length,
                                       iris$Species,mean)),
                 Petal.Length=c(tapply(iris$Sepal.Length,
                                       iris$Species,mean)))

#绘制单组条形图
p1<-plot_ly(data=iris,
        x=~Species,
        y=~Sepal.Length,
        name="Sepal.Length",
        type='bar')
p1

#多组条形图
p2<-p1%>%
  add_bars(y=~Petal.Length,
           name="Petal.Length")%>%
  layout(yaxis=list(title='Length'),
         barmode='group')
p2

#堆积柱形图
p3<-p1%>%
  add_bars(y=~Petal.Length,
           name="Petal.Length")%>%
  layout(yaxis=list(title='Length'),
         barmode='stack')
p3

在这里插入图片描述

2.2 散点图和折线图
data_0<-rnorm(100,mean=15)
data_1<-rnorm(100,mean=10)
data_2<-rnorm(100,mean=5)
id<-c(1:100)
data<-data.frame(id,data_0,data_1,data_2)

plot_ly(data,
        x=~id,
        y=~data_0,
        name='lines',
        type='scatter',
        mode='lines')%>%
  add_trace(y=~data_1,
            name='lines+points',
            mode='lines+markers')%>%
  add_trace(y=~data_2,
            name='points',
            mode='markers')

在这里插入图片描述

2.3 饼图
data<-data.frame(category=c("类别1","类别2","类别3","类别4","类别5"),
                 values=c(0.35,0.25,0.2,0.15,0.05),
                 stringsAsFactors=T)
#饼图
plot_ly(data=data,
        labels=~category,
        values=~values)%>%
  add_pie()

#圆环
plot_ly(data=data,
        labels=~category,
        values=~values)%>%
  add_pie(hole=0.5)
2.4 箱线图和直方图
#箱线图
plot_ly(x=~iris$Sepal.Length,
        name="Sepal.Length",
        type="box")%>%
  add_trace(x=~iris$Sepal.Width,
            name="Sepal.Width")%>%
  add_trace(x=~iris$Petal.Length,
            name="Petal.Length")%>%
  add_trace(x=~iris$Petal.Width,
            name="Petal Width")%>%
  layout(xaxis=list(title=""))

#直方图
plot_ly(x=rnorm(1000),
        type='histogram',
        marker=list(
          color="rgb(159,202,225)",
          line=list(
            color="rgb(8,48,107)",
            width=1.5))
        )
2.5 雷达图
plot_ly(type='scatterpolar',
        mode='markers',
        fill="toself")%>%
  add_trace(r=c(data$values_1,data$values_1[1]),
            theta=c(data$x,data$x[1]),
            name="类别1")%>%
  add_trace(r=c(data$values_2,data$values_2[2]),
            theta=c(data$x,data$x[1]),
            name="类别2")%>%
  layout(
    polar=list(
      radialaxis=list(
        visible=T,
        range=c(0,100)
      )),
    showlegend=T
  )

在这里插入图片描述

2.6 动态图
library(gapminder)
plot_ly(gapminder,
        x=~gdpPercap,
        y=~lifeExp,
        size=~pop,
        color=~continent,
        frame=~year,
        text=~country,
        hoverinfo="text",
        type="scatter",
        mode="markers")%>%
  layout(
    xaxis=list(title="人均GDP",type="log"),
    yaxis=list(title="预期寿命"))%>%
  animation_slider(
    currentvalue=list(prefix="当前年度",font=list(color="red")))%>%
  animation_button(label="播放")%>%
  animation_opts(1000,easing="elastic",redraw=T)

在这里插入图片描述

以上则是本文分享的全部内容

  • 14
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值