plotly for R

簡(jiǎn)介

  • 交互式繪圖工具, 提供python, R, js接口, 以R接口為例
  • api類(lèi)似, 需要注意在參數(shù)中涉及子項(xiàng)的在R中使用列表, 在python中使用字典
  • 支持管道符操作 %>%, 類(lèi)似ggplot2的 +
  • 詳細(xì)教程參見(jiàn) (https://plotly.com/r/)

基本命令

  • 基本繪圖命令:plot_ly(data, x, y, z, type, mode...)

x: x軸數(shù)據(jù)
y: y軸數(shù)據(jù)
z: z軸數(shù)據(jù) (三維圖形)
text: 文本內(nèi)容
type: 圖形的類(lèi)型, 包括點(diǎn)圖, 柱狀圖, 熱圖等
name: 名稱(chēng), 在圖注中使用
alpha: 透明度0-1, 0表示透明, 1表示不透明
size/sizes: 點(diǎn)的大小可以指定變量(~size), 也可以使用區(qū)間表示c(10, 100)
linetype/linetypes: 線(xiàn)的類(lèi)型
color/colors: 圖形的顏色, 可選擇變量或預(yù)設(shè)的顏色集合
symbol/symbols: 指定形狀, 例如symbol = ~symbol_indicessymbols = c('circle','x','o')
stroke/strokes: 邊框的顏色
width/height: 圖形的寬高
showlegend: 布爾值, 當(dāng)前trace是否顯示圖例

圖形命令 (add_trace/add_xxx)

點(diǎn)類(lèi)型 (散點(diǎn)圖, 折線(xiàn)圖, 氣泡圖...)

散點(diǎn)圖

  • 指定參數(shù)add_trace(..., type="scatter", mode="")
  • 等同于add_markers/add_lines
  • marker: 指定標(biāo)記點(diǎn)的相關(guān)特征, 包括邊框, 顏色, 大小等

symbol: 指定點(diǎn)的形狀
color: 點(diǎn)的顏色
colorscale: 設(shè)置色階, colorscale必須是一個(gè)數(shù)組, 設(shè)置0 ~ 1中某個(gè)區(qū)間想要使用的顏色, 至少需要最低(0)和最高(1)值的映射。例如: list(c(0.0, '#19d3f3'), c(0.333, '#e763fa'), c(0.666, '#e763fa'), c(1, '#636efa'))返吻。(左閉右開(kāi)的區(qū)間)
opacity: 點(diǎn)的透明度(0-1)
size: 點(diǎn)的大小, 默認(rèn)6
line: 傳入列表, 指定點(diǎn)的邊框特征

width: 邊框的粗細(xì)
color: 邊框的顏色
colorscale: 指定色階

  • line: 傳入列表, 指定線(xiàn)的特征

color: 線(xiàn)的顏色
width: 線(xiàn)的粗細(xì) (Default: 2)
shape: 線(xiàn)的形狀, 可選參數(shù)有: "linear"(直線(xiàn)) | "spline"(平滑曲線(xiàn)) | "hv"(階梯曲線(xiàn)) | "vh" | "hvh" | "vhv"
smoothing: 平滑度(0-1.3), 默認(rèn)1
simplify: 通過(guò)刪除幾乎共線(xiàn)的點(diǎn)來(lái)簡(jiǎn)化直線(xiàn)
dash: 設(shè)置線(xiàn)條的虛線(xiàn)樣式: "solid" | "dot" | "dash" | "longdash" | "dashdot" | "longdashdot"

  • connectgaps: 應(yīng)用于折線(xiàn)圖的參數(shù), 確定所提供的數(shù)據(jù)數(shù)組中的間隙(NA)是否連接螟左。
  • 同屬scatter類(lèi)型下的不同模式 (mode)

scatter類(lèi)型x與y是一一對(duì)應(yīng)的, 又有三種模式, 可以繪制散點(diǎn)圖或折線(xiàn)圖

  • mode="markers": 繪制點(diǎn)圖, 等同于 add_markers
  • mode="lines": 繪制線(xiàn)圖, 等同于 add_lines
  • mode="lines+markers": 散點(diǎn)圖和折線(xiàn)圖的結(jié)合
library(plotly)
plot_ly(economics, x = ~date, y = ~uempmed) %>% 
  add_trace(type="scatter", mode="markers", marker = list(color = "black", line = list(color = "red", width = 1)))

## head(economics)
## # A tibble: 6 x 6
##   date         pce    pop psavert uempmed unemploy
##   <date>     <dbl>  <dbl>   <dbl>   <dbl>    <dbl>
## 1 1967-07-01  507. 198712    12.6     4.5     2944
## 2 1967-08-01  510. 198911    12.6     4.7     2945
## 3 1967-09-01  516. 199113    11.9     4.6     2958
## 4 1967-10-01  512. 199311    12.9     4.9     3143
## 5 1967-11-01  517. 199498    12.8     4.7     3066
## 6 1967-12-01  525. 199657    11.8     4.8     3018


## 等同于以下命令
plot_ly(economics, x = ~date, y = ~uempmed) %>% 
  add_markers(marker = list(color = "black", line = list(color = "red", width = 1)))

Markers

在散點(diǎn)圖上又有許多擴(kuò)展, 將點(diǎn)連成線(xiàn)就變成了折線(xiàn)圖

plot_ly(economics, x = ~date, y = ~uempmed) %>% 
  add_trace(type = "scatter", mode = "lines", 
            line = list(color = "green", width = 2))

## 等同于以下命令
plot_ly(economics, x = ~date, y = ~uempmed) %>% 
  add_trace(type = "scatter", mode = "lines", 
            line = list(color = "green", width = 2))
Lines

也可以在折線(xiàn)圖的基礎(chǔ)上將點(diǎn)標(biāo)記出來(lái)

  • 包含的trace: marker, line
plot_ly(economics, x = ~date, y = ~uempmed) %>% 
  add_trace(type = "scatter", mode = "markers+lines", 
            marker = list(color = "black", line = list(color = "red", width = 1)),
            line = list(color = "green", width = 2))

## 等同于以下命令
plot_ly(economics, x = ~date, y = ~uempmed) %>% 
  add_trace(type = "scatter", mode = "lines", 
            line = list(color = "green", width = 2)) %>% 
  add_trace(type = "scatter", mode = "markers",
            marker = list(color = "black", line = list(color = "red", width = 1)))
Markers+Lines

氣泡圖則是將點(diǎn)的大小和顏色與其他特征聯(lián)系起來(lái) (Bubble)

library(plotly)

data <- read.csv("https://raw.githubusercontent.com/plotly/datasets/master/school_earnings.csv")

data$State <- as.factor(c('Massachusetts', 'California', 'Massachusetts', 'Pennsylvania', 'New Jersey', 'Illinois', 'Washington DC',
                          'Massachusetts', 'Connecticut', 'New York', 'North Carolina', 'New Hampshire', 'New York', 'Indiana',
                          'New York', 'Michigan', 'Rhode Island', 'California', 'Georgia', 'California', 'California'))

## head(data)
##      School Women Men Gap         State
## 1       MIT    94 152  58 Massachusetts
## 2  Stanford    96 151  55    California
## 3   Harvard   112 165  53 Massachusetts
## 4    U.Penn    92 141  49  Pennsylvania
## 5 Princeton    90 137  47    New Jersey
## 6   Chicago    78 118  40      Illinois

fig <- plot_ly(data, x = ~Women, y = ~Men, text = ~School, type = 'scatter', 
               mode = 'markers', size = ~Gap, color = ~State, colors = 'Paired',
               marker = list(opacity = 0.5, sizemode = 'diameter', line = list(color="white", width=1)))
fig <- fig %>% layout(title = 'Gender Gap in Earnings per University',
                      xaxis = list(showgrid = FALSE),
                      yaxis = list(showgrid = FALSE),
                      showlegend = FALSE)

fig

Bubble

啞鈴圖, 將起始點(diǎn)與終止點(diǎn)用segment連接起來(lái) (Dumbbell)

  • 包含的trace: marker, line
s <- read.csv("https://raw.githubusercontent.com/plotly/datasets/master/school_earnings.csv")
# order factor levels by men's income (plot_ly() will pick up on this ordering)
s$School <- factor(s$School, levels = s$School[order(s$Men)])

## head(s)
##      School Women Men Gap
## 1       MIT    94 152  58
## 2  Stanford    96 151  55
## 3   Harvard   112 165  53
## 4    U.Penn    92 141  49
## 5 Princeton    90 137  47
## 6   Chicago    78 118  40

library(plotly)
fig <- plot_ly(s)
## add_segment添加線(xiàn)段, 指定起始位置x, y和終止位置xend, yend
fig <- fig %>% add_segments(x = ~Women, xend = ~Men, y = ~School, yend = ~School, showlegend = F,
                            line = list(color = "rgb(230,230,230)"))
fig <- fig %>% add_markers(x = ~Women, y = ~School, name = "Women", color = I("pink"))
fig <- fig %>% add_markers(x = ~Men, y = ~School, name = "Men", color = I("blue"))
fig <- fig %>% layout(
  title = "Gender earnings disparity",
  xaxis = list(title = "Annual Salary (in thousands)"),
  margin = list(l = 65)
)

fig
Dumbbell

對(duì)于多個(gè)變量, 創(chuàng)建二維散點(diǎn)圖矩陣 (Splom)

  • opacity: 透明度, 0 ~ 1的區(qū)間 (Default: 1)
  • dimensions: 傳入列表, 指定需要繪圖的維度 (每一個(gè)維度都需要指定下面的參數(shù), 用列表包裹起來(lái))

visible: 布爾值, 是否可見(jiàn)
label: 設(shè)置與此splom維度對(duì)應(yīng)的標(biāo)簽
values: 設(shè)置要繪制的值

  • marker: 設(shè)置splom中點(diǎn)的特征

color: 設(shè)置點(diǎn)的顏色
colorscale: 設(shè)置色階
symbol: 設(shè)置點(diǎn)的形狀
size: 設(shè)置點(diǎn)的大小
line: 傳入列表, 設(shè)置點(diǎn)的邊框信息

color: 設(shè)置邊框的顏色
width: 設(shè)置邊框的寬度

  • text: 文本信息
library(plotly)

df <- read.csv('https://raw.githubusercontent.com/plotly/datasets/master/iris-data.csv')

## head(df)
##   sepal.length sepal.width petal.length petal.width       class
## 1          5.1         3.5          1.4         0.2 Iris-setosa
## 2          4.9         3.0          1.4         0.2 Iris-setosa
## 3          4.7         3.2          1.3         0.2 Iris-setosa
## 4          4.6         3.1          1.5         0.2 Iris-setosa
## 5          5.0         3.6          1.4         0.2 Iris-setosa
## 6          5.4         3.9          1.7         0.4 Iris-setosa

## 注意色階是左閉右開(kāi)的區(qū)間
pl_colorscale=list(c(0.0, '#19d3f3'),
                   c(0.333, '#e763fa'),
                   # c(0.333, '#e763fa'),
                   c(0.666, '#e763fa'),
                   # c(0.666, '#636efa'),
                   c(1, '#636efa'))

axis = list(showline=FALSE,
            zeroline=FALSE,
            gridcolor='#ffff',
            ticklen=4)

fig <- df %>%
  plot_ly() 
fig <- fig %>%
  add_trace(
    type = 'splom',
    dimensions = list(
      list(label='sepal length', values=~sepal.length),
      list(label='sepal width', values=~sepal.width),
      list(label='petal length', values=~petal.length),
      list(label='petal width', values=~petal.width)
    ),
    text=~class,
    marker = list(
      color = as.integer(as.factor(df$class)) / 3,
      colorscale = pl_colorscale,
      size = 7,
      line = list(
        width = 1,
        color = 'rgb(230,230,230)'
      )
    )
  ) 
fig <- fig %>%
  layout(
    title= 'Iris Data set',
    hovermode='closest',
    dragmode= 'select',
    plot_bgcolor='rgba(240,240,240, 0.95)',
    xaxis=list(domain=NULL, showline=F, zeroline=F, gridcolor='#ffff', ticklen=4),
    yaxis=list(domain=NULL, showline=F, zeroline=F, gridcolor='#ffff', ticklen=4),
    xaxis2=axis,
    xaxis3=axis,
    xaxis4=axis,
    yaxis2=axis,
    yaxis3=axis,
    yaxis4=axis
  )

fig
Splom

柱類(lèi)型(柱狀圖, 堆積圖, 直方圖, 瀑布圖...)

柱狀圖 (Bar Charts)

  • 指定參數(shù)add_trace(..., type="bar")
  • 等同于add_bars
  • marker參數(shù)指定柱子的特征, 包括邊框, 顏色等
  • width參數(shù)如果指定變量則表示柱子的寬度
  • color參數(shù)支持使用I("顏色")指定顏色/rgb(0.0.0)指定rgb顏色/rgba(0.0.0.0)指定rgb顏色和透明度
  • orientation: 設(shè)置條的方向, 可選"v" (豎直) / "h" (水平)
  • marker: 傳入列表, 指定柱子的特征, 包括顏色, 邊框等

line: 傳入列表, 指定邊框的顏色, 粗細(xì)等特征
color: 指定柱子的顏色
opacity: 指定柱子的透明度

  • layout中對(duì)于柱狀圖的設(shè)置

barmode: 設(shè)置直方圖的展示形式, 可選參數(shù): "stack" (堆疊展示) | "group" (分組展示) | "overlay" (覆蓋展示) | "relative" (相對(duì)高度) (Default: "group")
bargap: 每個(gè)柱子的間隔
barnorm: bar的標(biāo)準(zhǔn)化形式, 可選參數(shù): "" | "fraction" (分?jǐn)?shù)) | "percent" (百分?jǐn)?shù)) (Default: "")
bargap: 設(shè)置相鄰位置坐標(biāo) (不同特征) bar之間的間距 (0 ~ 1的區(qū)間)
bargroupgap: 設(shè)置相同坐標(biāo) (相同特征) bar之間的間距 (0 ~ 1的區(qū)間) (Default: 0)

library(plotly)

## 構(gòu)建數(shù)據(jù)
x= c(1, 2, 3, 5.5, 10)
y= c(10, 8, 6, 4, 2)
width = c(0.8, 0.8, 0.8, 3.5, 4)
data <- data.frame(x, y, width)

## 繪圖
fig <- plot_ly(data)
fig <- fig %>% add_trace(
  type="bar",
  x= ~x,
  y= ~y,
  width = ~width,
  marker = list(color = 'rgb(158,202,225)', 
                line = list(color = 'rgb(8,48,107)', width = 1.5)))

fig

bar

直方圖 (Histgram)

  • 指定參數(shù)add_trace(..., type="histogram")
  • 等同于 add_histogram
  • opacity: 柱子的透明度, 0 ~ 1的區(qū)間 (Default: 1)
  • histfunc: 每一個(gè)柱子的統(tǒng)計(jì)指標(biāo): "count" (默認(rèn)) | "sum" | "avg" | "min" | "max"
  • histnorm: 指定用于此直方圖規(guī)格化類(lèi)型: "" (默認(rèn)) | "percent" | "probability" | "density" | "probability density"
  • marker: 傳入列表參數(shù), 指定直方圖中柱子的特征

color: 直方圖的顏色
opacity: 直方圖的透明度, 0 ~ 1的區(qū)間 (Default: 1)
line: 傳入列表, 指定直方圖的邊框特征

width: 邊框的粗細(xì)
color: 邊框的顏色

fig <- plot_ly(alpha = 0.6)
fig <- fig %>% add_histogram(x = ~rnorm(500))
fig <- fig %>% add_histogram(x = ~rnorm(500) + 1)
fig <- fig %>% layout(barmode = "overlay")

fig
Overlayed Histgram

瀑布圖 (Waterfall)

  • 指定參數(shù)add_trace(..., type="waterfall")
  • measure: 包含值類(lèi)型的數(shù)組, 可選參數(shù): "relative" (相對(duì)變化) | "total" (計(jì)算總和) | "absolute" (重置計(jì)算結(jié)果, 絕對(duì)變化)
library(plotly)

x= list("Sales", "Consulting", "Net revenue", "Purchases", "Other expenses", "Profit before tax")
measure= c("relative", "relative", "total", "relative", "relative", "total")
text= c("+60", "+80", "", "-40", "-20", "Total")
y= c(60, 80, 0, -40, -20, 0)
data = data.frame(x=factor(x,levels=x),measure,text,y)

fig <- plot_ly(
  data, name = "20", type = "waterfall", measure = ~measure,
  x = ~x, textposition = "outside", y= ~y, text =~text,
  connector = list(line = list(color= "rgb(63, 63, 63)"))) 
fig <- fig %>%
  layout(title = "Profit and loss statement 2018",
        xaxis = list(title = ""),
        yaxis = list(title = ""),
        autosize = TRUE,
        showlegend = TRUE)

fig
Waterfall

數(shù)據(jù)整體分布 (箱線(xiàn)圖, 小提琴圖...)

箱線(xiàn)圖 (Box Plot)

  • 包含的trace: marker(點(diǎn))
  • 使用add_trace(..., type="box")繪制箱線(xiàn)圖
  • 等同于add_boxplot
  • quartilemethod參數(shù)指定了箱線(xiàn)圖的定量方法, 包括linear(默認(rèn))/inclusive/exclusive
  • boxpoints: 在箱線(xiàn)圖的基礎(chǔ)上繪制點(diǎn)圖 "all" | "outliers" | FALSE
  • opacity: 箱線(xiàn)圖的透明度, 0 ~ 1的范圍 (Default: 1)
  • fillcolor: 箱線(xiàn)圖的填充顏色
  • pointpos參數(shù)指定散點(diǎn)圖與箱線(xiàn)圖的偏移量, -2 ~ 2 的區(qū)間
  • jitter指定散點(diǎn)隨即抖動(dòng)的范圍, 0 ~ 1的區(qū)間
  • notched: 布爾類(lèi)型, 是否創(chuàng)建帶凹槽的箱線(xiàn)圖
  • line: 傳入列表, 指定邊框信息, 包括顏色
  • marker: 傳入列表, 指定箱線(xiàn)圖中點(diǎn)的特征

outliercolor: 異常點(diǎn)的顏色
symbol: 點(diǎn)的形狀 (Default: "circle")
opacity: 點(diǎn)的透明度 (Default: 1)
color: 點(diǎn)的顏色(指定的jitter的顏色)
size: 點(diǎn)的大小, 大于0的范圍 (Default: 6)
line : 傳入列表參數(shù), 指定點(diǎn)的邊框信息

color: 邊框的顏色 (Default: "#444")
width: 邊框的粗細(xì) (Default: 0)
outliercolor: 異常點(diǎn)的邊框的顏色
outlierwidth: 異常點(diǎn)的邊框的粗細(xì) (Default: 1)

  • line: 傳入列表, 指定箱線(xiàn)圖的邊框信息

color: 邊框的顏色
width: 邊框的寬度 (Default: 2)

  • boxmean: 展示箱線(xiàn)圖均值所在的位置: TRUE | "sd" (mean和sd都標(biāo)記出來(lái)) | FALSE
  • layout中對(duì)于箱線(xiàn)圖的參數(shù)

boxmode: 箱線(xiàn)圖的展示形式, 可選參數(shù): "group" (分組展示) | "overlay" (覆蓋顯示)
boxgap: 設(shè)置相鄰位置坐標(biāo) (不同特征) box之間的間距 (0 ~ 1的區(qū)間) (Default: 0.3)
boxgroupgap: 設(shè)置相同坐標(biāo) (相同特征) box的間距 (0 ~ 1的區(qū)間) (Default: 0.3)

library(plotly)
fig <- plot_ly(y = list(1,2,3,4,5), type = "box", quartilemethod="linear", name="Linear Quartile Mode") %>% 
  add_trace(y = list(1,2,3,4,5), quartilemethod="inclusive", name="Inclusive Quartile Mode") %>% 
  add_trace(y = list(1,2,3,4,5), quartilemethod="exclusive", name="Exclusive Quartile Mode") %>% 
  layout(title = "Modifying The Algorithm For Computing Quartiles")

fig
Boxplot
fig <- plot_ly(y = ~rnorm(50), type = "box", boxpoints = "all", jitter = 0.3, pointpos = 1.8)

fig
Boxplot+Jitter

小提琴圖 (Violin Plot)

  • 包含的trace: box(小提琴中的箱線(xiàn)圖), marker(點(diǎn)), line(邊框)
  • 指定參數(shù)add_trace(..., type="voilin")繪制小提琴圖
  • box: 傳入列表參數(shù), 控制小提琴中的箱線(xiàn)圖特征

visable: 是否在小提琴中可見(jiàn)箱線(xiàn)圖(T | F)
width: 箱線(xiàn)圖的寬度(Default: 0.25)
fillcolor: 箱線(xiàn)圖的填充顏色
line: 傳入列表參數(shù), 設(shè)定箱線(xiàn)圖的邊框特征

color: 箱線(xiàn)圖的邊框顏色
width: 箱線(xiàn)圖的邊框粗細(xì)

  • marker: 傳入列表參數(shù), 設(shè)定小提琴圖中點(diǎn)的特征

outliercolor: 離群點(diǎn)的顏色 (只包含離群點(diǎn))
symbol: 點(diǎn)的形狀 (Default: "circle")
opacity: 點(diǎn)的透明度, 0-1的區(qū)間 (Default: 1)
size: 點(diǎn)的大小 (Default: 6)
line: 傳入列表參數(shù), 設(shè)置點(diǎn)的邊框特征

color: 點(diǎn)的邊框的顏色 (包含所有點(diǎn))
width: 點(diǎn)的邊框的粗細(xì) (包含所有點(diǎn))
outliercolor: 離群點(diǎn)的邊框的顏色 (只包含離群點(diǎn))
outlierwidth: 離群點(diǎn)的邊框的粗細(xì) (只包含離群點(diǎn))

  • line: 傳入列表參數(shù), 指定小提琴的邊框特征

color: 小提琴的邊框顏色
width: 小提琴的邊框粗細(xì) (Default: 2)

  • side: 指定小提琴展示在哪一側(cè), 可選參數(shù)有: "negative"(左側(cè)) | "positive"(右側(cè)) | "both"(兩側(cè), 默認(rèn))
  • points: 展示點(diǎn), 可選參數(shù)有: "all"(全部點(diǎn)) | "outliers"(異常點(diǎn), 默認(rèn)) | FALSE(不展示點(diǎn), 只展示小提琴)
  • pointpos: 散點(diǎn)圖與小提琴圖的偏移量, -2 ~ 2的區(qū)間
  • jitter: 點(diǎn)的抖動(dòng)范圍, 0 ~ 1的范圍
  • filecolor: 小提琴圖的填充顏色
  • meanline: 傳入列表小提琴內(nèi)部顯示與樣本平均值相對(duì)應(yīng)的線(xiàn)

visable: 線(xiàn)是否可見(jiàn)(TRUE | FALSE)
color: 線(xiàn)的顏色
width: 線(xiàn)的寬度

  • layout中對(duì)于小提琴圖的設(shè)定 (官網(wǎng)沒(méi)有這些參數(shù), 但是對(duì)圖形有影響)

violinmode: 小提琴圖的展示形式, 可選參數(shù): "group" (分組展示) | "overlay" (覆蓋顯示)
violingap: 設(shè)置相鄰位置坐標(biāo) (不同特征) violin之間的間距 (0 ~ 1的區(qū)間) (Default: 0.3)
violingroupgap: 設(shè)置相同坐標(biāo) (相同特征) violin的間距 (0 ~ 1的區(qū)間) (Default: 0.3)

library(plotly)

df <- read.csv("https://raw.githubusercontent.com/plotly/datasets/master/violin_data.csv")

fig <- df %>%
  plot_ly(type = 'violin') 
fig <- fig %>%
  add_trace(
    x = ~day[df$smoker == 'Yes'],
    y = ~total_bill[df$smoker == 'Yes'],
    legendgroup = 'Yes',
    scalegroup = 'Yes',
    name = 'Yes',
    side = 'negative',
    box = list(
      visible = T
    ),
    meanline = list(
      visible = T
    ),
    color = I("blue")
  ) 
fig <- fig %>%
  add_trace(
    x = ~day[df$smoker == 'No'],
    y = ~total_bill[df$smoker == 'No'],
    legendgroup = 'No',
    scalegroup = 'No',
    name = 'No',
    side = 'positive',
    box = list(
      visible = T
    ),
    meanline = list(
      visible = T
    ),
    color = I("green")
  ) 

fig <- fig %>%
  layout(
    xaxis = list(
      title = ""  
    ),
    yaxis = list(
      title = "",
      zeroline = F
    ),
    violingap = 0,
    violingroupgap = 0,
    violinmode = 'overlay'
  )

fig
splited violin

不知道為何violingap, violingroupgap, violinmode會(huì)報(bào)warning提示沒(méi)有該參數(shù), 但是實(shí)際改變這些參數(shù)確實(shí)是對(duì)圖形有影響的

善萁遥基圖 (Sankey Diagram)

  • 包含的trace: node (節(jié)點(diǎn)), link (連接)
  • 指定參數(shù)add_trace(..., type="sankey")
  • 節(jié)點(diǎn)node和連接link
  • visible: 是否可見(jiàn), 可選參數(shù): TRUE | FALSE | "legendonly" (之戰(zhàn)時(shí)圖例)
  • domain: 傳入列表, 設(shè)置珊樵铮基圖展示的區(qū)域

x: x軸展示的范圍, 以整體的分?jǐn)?shù)形式表示, 0~1的區(qū)間
y: y軸展示的范圍, 以整體的分?jǐn)?shù)形式表示, 0~1的區(qū)間
row: 如果存在網(wǎng)格,表示網(wǎng)格中的指定行
column: 如果存在網(wǎng)格撵彻,表示網(wǎng)格中的指定列

  • node: 傳入列表, 指定節(jié)點(diǎn)信息

label: 設(shè)置每個(gè)節(jié)點(diǎn)的label, 用于展示文本信息, 用向量表示多個(gè)幾點(diǎn)的label
groups: 節(jié)點(diǎn)的分組信息
x: 節(jié)點(diǎn)的標(biāo)準(zhǔn)化垂直位置
y: 節(jié)點(diǎn)的標(biāo)準(zhǔn)化水平位置
color: 節(jié)點(diǎn)的顏色, 用向量表示多個(gè)節(jié)點(diǎn)的顏色
pad: 設(shè)置節(jié)點(diǎn)之間的填充距離 (Default: 20)
thickness: 設(shè)置節(jié)點(diǎn)的寬度 (Default: 20)
line: 傳入列表, 設(shè)置每個(gè)節(jié)點(diǎn)的邊框信息

color: 邊框的顏色
width: 邊框的寬度

  • link: 傳入列表, 設(shè)置連接的特征

label: 連接的標(biāo)識(shí), 展示文本信息, 使用向量表示多個(gè)連接的label
color: 連接的顏色
source: 連接的起始位置, 使用向量表示多個(gè)值
target: 連接的終止位置, 使用向量表示多個(gè)值
value: 表示流量的具體數(shù)值
line: 傳入列表, 設(shè)置連接的邊框信息

width: 邊框的寬度
color: 邊框的顏色

library(plotly)

fig <- plot_ly(
  type = "sankey",
  orientation = "h",
  
  node = list(
    label = c("A1", "A2", "B1", "B2", "C1", "C2"),
    color = c("blue", "blue", "blue", "blue", "blue", "blue"),
    pad = 15,
    thickness = 20,
    line = list(
      color = "black",
      width = 0.5
    )
  ),
  
  link = list(
    source = c(0,1,0,2,3,3),  ## 每個(gè)值對(duì)應(yīng)一個(gè)link的起始位置, 值代表node的index, 從0開(kāi)始
    target = c(2,3,3,4,4,5),  ## 每個(gè)值對(duì)應(yīng)一個(gè)link的終止位置, 值代表node的index, 從0開(kāi)始
    value =  c(8,4,2,8,4,2)   ## 每個(gè)值對(duì)應(yīng)一個(gè)link的流量
  )
)
fig <- fig %>% layout(
  title = "Basic Sankey Diagram",
  font = list(
    size = 10
  )
)

fig
Sankey_1
library(plotly)
library(rjson)

json_file <- "https://raw.githubusercontent.com/plotly/plotly.js/master/test/image/mocks/sankey_energy.json"
json_data <- fromJSON(paste(readLines(json_file), collapse=""))

fig <- plot_ly(
    type = "sankey",
    domain = list(
      x =  c(0,1),
      y =  c(0,1)
    ),
    orientation = "h",
    valueformat = ".0f",
    valuesuffix = "TWh",

    node = list(
      label = json_data$data[[1]]$node$label,
      color = json_data$data[[1]]$node$color,
      pad = 15,
      thickness = 15,
      line = list(
        color = "black",
        width = 0.5
      )
    ),

    link = list(
      source = json_data$data[[1]]$link$source,
      target = json_data$data[[1]]$link$target,
      value =  json_data$data[[1]]$link$value,
      label =  json_data$data[[1]]$link$label
    )
  ) 
fig <- fig %>% layout(
    title = "Energy forecast for 2050<br>Source: Department of Energy & Climate Change, Tom Counsell via <a >Mike Bostock</a>",
    font = list(
      size = 10
    ),
    xaxis = list(showgrid = F, zeroline = F),
    yaxis = list(showgrid = F, zeroline = F)
)

fig
Sankey_2

誤差線(xiàn) (Error Bar)

  • 指定add_trace(..., error_y / error_x)繪制誤差線(xiàn)
  • 注意需要先計(jì)算特征的方差/標(biāo)準(zhǔn)差合并到原數(shù)據(jù)中, 指定該變量繪制誤差線(xiàn)
  • 誤差線(xiàn)可以應(yīng)用于barplot/Scatterplot /lineplot
  • 傳入列表指定誤差線(xiàn)特征
  • visable: 布爾值, 誤差線(xiàn)是否可見(jiàn)
  • type: 確定用于生成誤差線(xiàn)的規(guī)則, 可選參數(shù)有: "percent"(誤差新的長(zhǎng)度對(duì)應(yīng)于基礎(chǔ)數(shù)據(jù)的百分比) | "constant"(誤差線(xiàn)長(zhǎng)度為常量墙贱。在參數(shù)"value"中設(shè)置此常量) | "sqrt"誤差線(xiàn)長(zhǎng)度對(duì)應(yīng)于數(shù)據(jù)的sqaure | "data"(誤差線(xiàn)長(zhǎng)度由參數(shù)"array"設(shè)置)
  • symmetric: 布爾值, 確定誤差線(xiàn)在兩個(gè)方向上的長(zhǎng)度是否相同(垂直線(xiàn)的上/下,水平線(xiàn)的左/右)却紧。
  • array: 設(shè)置與每個(gè)誤差線(xiàn)長(zhǎng)度相對(duì)應(yīng)的數(shù)據(jù), 值是相對(duì)于基礎(chǔ)數(shù)據(jù)的桐臊。
  • value: 設(shè)置與誤差線(xiàn)長(zhǎng)度相對(duì)應(yīng)的百分比(如果"type"設(shè)置為"percent")或常量(如果“type”設(shè)置為“constant”)(Default: 10)
  • color: 設(shè)置誤差線(xiàn)的顏色
  • width: 設(shè)置誤差線(xiàn)的寬度 (上下兩條bar)
  • thickness: 設(shè)置誤差線(xiàn)的厚度 (誤差線(xiàn)整體的粗細(xì)) (Default: 2)
library(plotly)
library(plyr)

data_mean <- ddply(ToothGrowth, c("supp", "dose"), summarise, length = mean(len))
data_sd <- ddply(ToothGrowth, c("supp", "dose"), summarise, length = sd(len))
data <- data.frame(data_mean, data_sd$length)
data <- rename(data, c("data_sd.length" = "sd"))
data$dose <- as.factor(data$dose)

plot_ly() %>% 
  add_trace(data = data[which(data$supp == 'OJ'),], x = ~dose, y = ~length, type = 'bar', name = 'OJ',
            error_y = ~list(array = sd, color = '#000000')) %>% 
  add_trace(data = data[which(data$supp == 'VC'),], x = ~dose, y = ~length, type = "bar", name = 'VC',
            error_y = ~list(array = sd, color = '#000000'))
errorbar

圖內(nèi)文字和批注 (text and annotations)

  • add_text指定文字內(nèi)容以及字體特征
  • 根據(jù)所繪制圖形的不同文字的位置也有所不同

text

  • 簡(jiǎn)單的文字信息, 不包含箭頭, 文本框
  • text: 指定文字的內(nèi)容
  • textposition: 指定文字的位置, 可選參數(shù): "top left" | "top center" | "top right" | "middle left" | "middle center" | "middle right" | "bottom left" | "bottom center" | "bottom right" | "outside" | "inside"
  • textfont: 傳入列表參數(shù), 指定文字的字體相關(guān)特征

family: 指定字體"Arial", "Balto", "Courier New"...
size: 指定字體大小
color: 指定字體顏色

library(plotly)

df <- read.csv("https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv", 
               stringsAsFactors = FALSE)
df <- df[which(df$year==2007 & df$continent=='Europe' & df$pop > 2.e6),]

fig <- plot_ly(df, type='bar', x = ~country, y = ~pop, text = ~lifeExp, name="",
               hovertemplate = paste('%{x}', '<br>lifeExp: %{text:.2s}<br>'),
               texttemplate = '%{y:.2s}', textposition = 'outside')

fig <- fig %>% layout(uniformtext=list(minsize=8, mode='hide'))
fig
text

annotations

  • 包含箭頭, 文本框的批注信息
  • add_annotations指定批注信息
  • 也可以由layout(..., annotations)指定, 需要傳入列表參數(shù)
  • visable: 布爾值, 批注是否可見(jiàn)
  • text: 設(shè)置與此批注關(guān)聯(lián)的文本。Plotly使用HTML標(biāo)記的子集來(lái)執(zhí)行諸如換行符(
    )晓殊、粗體(<b></b>)断凶、斜體(<i></i>)、超鏈接(<a href='…'></a>)
  • textangle: 設(shè)置字體的角度 (Default: 0)
  • font: 傳入列表參數(shù), 指定字體相關(guān)信息

family: 指定字體, 包括"Arial", "Balto", "Courier New", "Droid Sans"...
size: 字體大小
color: 字體顏色

  • width/height: 批注的寬高
  • opacity: 批注的透明度, 0 ~ 1的區(qū)間 (Default: 1)
  • align: 設(shè)置批注的水平對(duì)齊方式, 可選參數(shù): "left" | "center" | "right" (Default: "center")
  • valign: 設(shè)置批注的數(shù)值對(duì)齊方式, 可選參數(shù): "top" | "middle" | "bottom" (Default: "middle")
  • bgcolor: 設(shè)置批注的背景顏色 (Default: "rgba(0,0,0,0)")
  • bordercolor: 設(shè)置批注的邊框顏色 (Default: "rgba(0,0,0,0)")
  • borderpad: 設(shè)置邊框和文字內(nèi)容之間的填充 (Default: 1)
  • borderwidth: 邊框的寬度
  • showarrow: 布爾值, 是否顯示箭頭
  • arrowwidth: 箭頭的寬度
  • arrowcolor: 箭頭的顏色
  • arrowside: 指定箭頭指向的方向, 可選參數(shù): "end" | "start" | "end+start" | "none" (Default: "end")
  • arrowhead/startarrowhead: 指定結(jié)束/開(kāi)始箭頭的形狀, 0 ~ 8的區(qū)間 (Default: 1)
  • arrowsize/startarrowsize: 指定結(jié)束/開(kāi)始位置箭頭的大小 (Default: 1)
  • standoff/startstandoff: 設(shè)置距離結(jié)束/開(kāi)始位置的距離, 以像素為單位 (Default: 0)
  • ax/ay: 設(shè)置批注與圖形的偏移量, 以像素為單位 (ax: 左右偏移; ay: 上下偏移)
  • xref/yref: 設(shè)置批注相對(duì)參考坐標(biāo)軸, 可選參數(shù) "x" | "x2"... | "y" | "y2"...
library(plotly)

m <- mtcars[which.max(mtcars$mpg), ]

a <- list(
  x = m$wt,
  y = m$mpg,           # 需要添加注釋的位置
  text = rownames(m),  # 注釋內(nèi)容
  xref = "x",          # 參考坐標(biāo)軸x
  yref = "y",          # 參考坐標(biāo)軸y
  showarrow = TRUE,    # 展示箭頭
  arrowhead = 7,       # 箭頭類(lèi)型 (7 -> 方塊)
  ax = 20,             # x軸偏移量 (20px)
  ay = -40             # y軸偏移量 (40px)
)

fig <- plot_ly(mtcars, x = ~wt, y = ~mpg)
fig <- fig %>% add_markers()
fig <- fig %>% layout(annotations = a)

fig
Annotations

熱圖 (Heatmap)

  • add_trace(p, type="heatmap"[, ...])
  • visible: 是否顯示trace, 可選參數(shù): TRUE | FALSE | "legendonly" (Default: TRUE)
  • showlegend: 布爾值, 是否顯示圖例
  • legendgroup: 圖例的分組, 在圖例的分組繪制時(shí)使用
  • opacity: 透明度, 0 ~ 1的區(qū)間 (Default: 1)
  • x/y: 指定樣本/特征
  • z: 指定繪制熱圖需要的值
  • colorscale: 設(shè)置繪制熱圖的色階 (鍵值對(duì)形式), 指定0 (最小值) ~ 1 (最大值) 之間的顏色 (最小值和最大值必須指定), 例如: [[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]或者使用預(yù)設(shè)色階字符串, 包括:
    (Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu,Reds,Blues,Picnic,Rainbow,Portland,Jet,Hot,Blackbody,Earth,Electric,Viridis,Cividis)
  • colors: 指定熱圖的顏色 (向量形式), 支持顏色插值函數(shù), 如colorRamp(), 也支持預(yù)設(shè)顏色集, 包括: (Greys,YlGnBu,Greens,YlOrRd,RdBu,Blues等)
library(plotly)
## dim(volcano)
## [1] 87 61

fig <- plot_ly(z = volcano,    ## (data.frame/matrix/array)格式, 每一個(gè)值對(duì)應(yīng)熱圖一個(gè)cell的顏色
               type = "heatmap")

fig
Heatmap1
m <- matrix(rnorm(9), nrow = 3, ncol = 3)
fig <- plot_ly(
    x = c("a", "b", "c"), y = c("d", "e", "f"),  ## 指定x/y
    z = m, type = "heatmap"
)

fig
Heatmap2

其他

  • 布局 (layout)
  • title: 傳入列表, 標(biāo)題的設(shè)置
  • text: 標(biāo)題文本內(nèi)容
  • font: 傳入列表, 對(duì)標(biāo)題的字體的設(shè)置

family: 對(duì)標(biāo)題的字體設(shè)置
size: 標(biāo)題的大小
color: 標(biāo)題的顏色

  • xref: 橫向偏移時(shí)參考的坐標(biāo)軸 (Default: "container")
  • yref: 縱向偏移時(shí)參考的坐標(biāo)軸 (Default: "container")
  • x: 在標(biāo)準(zhǔn)化坐標(biāo)系中巫俺,相對(duì)于"xref"的x位置從"0" (左)到"1" (右) (Default: 0.5)
  • y: 在標(biāo)準(zhǔn)化坐標(biāo)系中认烁,相對(duì)于"yref"的y位置從“0”(左)到“1”(右) (Default: "auto")
  • xanchor: 設(shè)置標(biāo)題相對(duì)于其x位置的水平對(duì)齊方式, 可選參數(shù): "left" (左對(duì)齊) | "right" (右對(duì)齊) | "center" (居中) | "auto" (將"xref"除以3,并根據(jù)"x"的值自動(dòng)計(jì)算"xanchor"值) (Default: "auto")
  • yanchor: 設(shè)置標(biāo)題相對(duì)于其y位置的水平對(duì)齊方式, 可選參數(shù): "left" (左對(duì)齊) | "right" (右對(duì)齊) | "center" (居中) | "auto" (將"yref"除以3介汹,并根據(jù)"y"的值自動(dòng)計(jì)算"yanchor"值) (Default: "auto")
  • pad: 設(shè)置標(biāo)題的填充却嗡。每個(gè)填充值僅在相應(yīng)設(shè)置了相應(yīng)的"xanchor"/"yanchor"值時(shí)才適用

r: 右側(cè)(right)的填充 (px) (Default: 0)
t: 頂部(top)的填充 (px) (Default: 0)
l: 左側(cè)(left)的填充 (px) (Default: 0)
b: 底部(bottom)的填充 (px) (Default: 0)

  • showlegend: 布爾值, 是否顯示圖例
  • legend: 傳入列表, 設(shè)置圖例的特征
  • bgcolor: 圖例的背景顏色
  • bordercolor: 邊框顏色
  • borderwidth: 邊框的寬度 (Default: 0)
  • font: 傳入列表, 設(shè)置圖例的字體特征

family: 設(shè)置圖例文字的字體
color: 設(shè)置圖例文字的顏色
size: 設(shè)置圖例文字的大小 (大于1)

  • orientation: 設(shè)置圖例的方向, 可選參數(shù): "v" (豎直) | "h" (水平)
  • traceorder: 確定圖例項(xiàng)的顯示順序, 可選參數(shù): "reversed" (與normal相反) | "grouped" (則項(xiàng)目將分組顯示(當(dāng)提供跟蹤"legendgroup"時(shí)) | "reversed+grouped" (與"grouped"按相反的順序顯示) | "normal" (與輸入數(shù)據(jù)相同的順序從上到下顯示)
  • tracegroupgap: 設(shè)置圖例組之間的垂直間距 (以px為單位) (Default: 10)
  • itemsizing: 確定圖例項(xiàng)符號(hào)是否具有相應(yīng)的trace進(jìn)行縮放, 可選參數(shù): "trace" | "constant"
  • x/y: 圖例的坐標(biāo) (-2 ~ 3之間)
  • xanchor: 圖例的水平定位, 可選參數(shù): "auto" | "left" | "center" | "right"
  • yanchor: 圖例的豎直定位, 可選參數(shù): "auto" | "top" | "middle" | "bottom"
  • title: 傳入列表, 設(shè)置圖例標(biāo)題的特征

text: 設(shè)置圖例標(biāo)題的文字內(nèi)容
side: 圖例標(biāo)題相對(duì)于圖例的位置, 可選參數(shù):"top" | "left" | "top left"
font: 傳入列表, 設(shè)置圖例標(biāo)題的字體相關(guān)特征

family: 設(shè)置字體
color: 設(shè)置文字顏色
size: 設(shè)置文字大小

  • margin: 設(shè)置圖形的外邊距

l/r/t/b: 分別設(shè)置左(left), 右(right), 上(top, Default: 100), 下(bottom) (Default: 80)
pad: 外邊距的填充量(px) (Default: 0)
autoexpand: 自動(dòng)擴(kuò)展, 根據(jù)圖例, 標(biāo)題等因素對(duì)圖形進(jìn)行動(dòng)態(tài)擴(kuò)展 (Default: TRUE)

  • width: 設(shè)置圖形整體的寬度 (Default: 700)
  • height: 設(shè)置圖形整體的高度 (Default: 450)
  • font: 設(shè)置圖形中文字的特征

family: 字體 (Default: ""Open Sans", verdana, arial, sans-serif")
color: 顏色 (Default: 12)
size: 大小 (Default: "#444")

  • uniformtext: 統(tǒng)一文本

mode: 確定如何在每個(gè)跟蹤類(lèi)型之間統(tǒng)一不同文本元素的字體大小, 如果計(jì)算的文本大小小于由minsize使用"hide"選項(xiàng)隱藏文本; 使用"show"選項(xiàng)顯示文本, 而不需要進(jìn)一步縮小縮放
minsize: 設(shè)置相同類(lèi)型trace之間的最小文本大小 (Default: 0)

  • paper_bgcolor: 設(shè)置圖紙的背景顏色
  • plot_bgcolor: 設(shè)置圖形的背景顏色
  • 坐標(biāo)軸 (Axes)
  • visible: 布爾值, 坐標(biāo)軸是否可見(jiàn)
  • color: 坐標(biāo)軸的顏色 (Default: "#444")
  • title: 坐標(biāo)軸的標(biāo)題

text: 標(biāo)題的內(nèi)容
standoff: 設(shè)置軸標(biāo)簽和標(biāo)題文本之間的間距
font: 標(biāo)題的字體

family: 字體
size: 大小
color: 顏色

  • type: 設(shè)置坐標(biāo)軸的類(lèi)型, 可選參數(shù): "-" | "linear" | "log" | "date" | "category" | "multicategory" (Default: "-")
  • autorange: 布爾值, 是否根據(jù)輸入數(shù)據(jù)自動(dòng)計(jì)算坐標(biāo)軸的范圍 (Default: TRUE)
  • rangemode: 適用于線(xiàn)性軸, 則根據(jù)輸入數(shù)據(jù)的極值計(jì)算范圍, 可選參數(shù): "normal" | "tozero" (坐標(biāo)軸擴(kuò)展到0) | "nonnegative" (坐標(biāo)軸始終非負(fù))
  • range: 手動(dòng)設(shè)置坐標(biāo)軸的范圍
  • fixedrange: 布爾值, 確定此軸是否可縮放, 如果為T(mén)RUE, 則禁用縮放
  • tickmode: 設(shè)定軸的刻度模式, 可選參數(shù): "auto" (通過(guò)"nticks"設(shè)置刻度數(shù)) | "linear" (刻度的位置由起始位置"tick0"和刻度步長(zhǎng)"dtick"決定) | "array" (通過(guò)"tickvals"設(shè)置ticks的位置,tick文本為"ticktext")
  • nticks: 指定特定軸的最大刻度數(shù)
  • tick0: 設(shè)置坐標(biāo)軸上第一個(gè)刻度的位置
  • dtick: 設(shè)置刻度步長(zhǎng)
  • tickvals: 傳入數(shù)組, 設(shè)置該坐標(biāo)軸上的刻度出現(xiàn)的值
  • ticktext: 每一個(gè)tickvals出現(xiàn)的刻度上的顯示的文本
  • ticks: 是否繪制刻度, 可選參數(shù): "outside" | "inside" | ""
  • mirror: 確定坐標(biāo)軸/刻度是否鏡像到另一側(cè), 可選參數(shù): TRUE | "ticks" | FALSE | "all" | "allticks"
  • ticklen: 設(shè)置刻度長(zhǎng)度 (px) (Default: 5)
  • tickwidth: 設(shè)置刻度寬度 (px) (Default: 1)
  • tickcolor: 設(shè)置刻度的顏色 (Default: "#444")
  • showticklabels: 布爾值, 是否繪制刻度標(biāo)簽
  • automargin: 確定長(zhǎng)刻度標(biāo)簽是否自動(dòng)擴(kuò)展外邊距
  • tickfont: 刻度的字體特征

family: 字體
color: 顏色
size: 大小

  • tickangle: 刻度的角度
  • tickprefix: 刻度的前綴 (Default: "")
  • showtickprefix: 指定哪些刻度會(huì)展示簽證, 可選參數(shù): "all" | "first" | "last" | "none" (Default: "all")
  • ticksuffix: 刻度的后綴 (Default: "")
  • showticksuffix: 指定哪些刻度會(huì)展示簽證, 可選參數(shù): "all" | "first" | "last" | "none" (Default: "all")
  • showline: 布爾值, 是否繪制此坐標(biāo)軸的邊界線(xiàn)
  • linecolor: 坐標(biāo)軸的顏色 (Default: "#444")
  • linewidth: 設(shè)置坐標(biāo)軸的寬度 (Default: 1)
  • showgrid: 確定是否繪制網(wǎng)格線(xiàn)嘹承。如果為"TRUE", 則在每個(gè)刻度線(xiàn)處繪制網(wǎng)格線(xiàn)
  • gridcolor: 設(shè)置網(wǎng)格線(xiàn)的顏色 (Default: "#eee")
  • gridwidth: 設(shè)置網(wǎng)格線(xiàn)的寬度 (Default: 1)
  • zeroline: 布爾值, 確定是否沿該軸的0值繪制直線(xiàn)
  • zerolinecolor: 設(shè)置0線(xiàn)的顏色 (Default: "#444")
  • zerolinewidth: 設(shè)置0線(xiàn)的寬度 (Default: 1)
  • side: 確定坐標(biāo)軸繪制的位置, 可選參數(shù): "top" | "bottom" | "left" | "right"
  • domain: 設(shè)置此軸的域 (Default: [0, 1])
  • anchor: 如果設(shè)置為相反的字母軸id (例如"x2", "y"), 則此軸將綁定到相應(yīng)的相反字母軸窗价。如果設(shè)置為free,則該軸的位置由position決定叹卷。
  • position: 設(shè)置坐標(biāo)軸在圖形中的位置 (在標(biāo)準(zhǔn)化坐標(biāo)中), 只有當(dāng)anchor設(shè)置為free時(shí)才有效果
  • ggplot2圖形轉(zhuǎn)換plotly: ggplotly(p)
  • 導(dǎo)出靜態(tài)圖片
  1. 首先需要下載orca(https://github.com/plotly/orca/releases), 選擇對(duì)應(yīng)系統(tǒng)的版本
  2. 安裝orca并添加到環(huán)境變量
  3. 安裝額外依賴(lài): install.packages("processx")
  • p: 需要導(dǎo)出的plotly對(duì)象
  • file: 導(dǎo)出的文件名
  • width: 生成文件后圖片的寬度, 默認(rèn)使用layout.width生成圖片的寬度
  • height: 生成文件后圖片的高度, 默認(rèn)使用layout.height生成圖片的高度
  • scale: 圖片的縮放比例
  • verbose: 是否在控制臺(tái)打印日志信息
library(plotly)

if (!require("processx")) install.packages("processx")
fig <- plot_ly(z = ~volcano) %>% add_surface()
orca(fig, "surface-plot.png", scale = 0.5, verbose = T)

## exported surface-plot, in 1822.699999 ms
## \
## done with code 0 in 1.82 sec - all task(s) completed
orca_static_plot
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撼港,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子豪娜,更是在濱河造成了極大的恐慌餐胀,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘤载,死亡現(xiàn)場(chǎng)離奇詭異否灾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)鸣奔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)墨技,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人挎狸,你說(shuō)我怎么就攤上這事扣汪。” “怎么了锨匆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵崭别,是天一觀的道長(zhǎng)冬筒。 經(jīng)常有香客問(wèn)我,道長(zhǎng)茅主,這世上最難降的妖魔是什么舞痰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮诀姚,結(jié)果婚禮上响牛,老公的妹妹穿的比我還像新娘。我一直安慰自己赫段,他們只是感情好呀打,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布敦第。 她就那樣靜靜地躺著旱眯,像睡著了一般火窒。 火紅的嫁衣襯著肌膚如雪驮俗。 梳的紋絲不亂的頭發(fā)上窘茁,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天躯畴,我揣著相機(jī)與錄音爵政,去河邊找鬼及汉。 笑死稠炬,一個(gè)胖子當(dāng)著我的面吹牛焕阿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播首启,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼暮屡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了毅桃?” 一聲冷哼從身側(cè)響起褒纲,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钥飞,沒(méi)想到半個(gè)月后莺掠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡读宙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年彻秆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片结闸。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唇兑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桦锄,到底是詐尸還是另有隱情扎附,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布结耀,位于F島的核電站留夜,受9級(jí)特大地震影響匙铡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碍粥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一慰枕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧即纲,春花似錦、人聲如沸博肋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匪凡。三九已至膊畴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間病游,已是汗流浹背唇跨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衬衬,地道東北人买猖。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像滋尉,于是被迫代替她去往敵國(guó)和親玉控。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 本文主要針對(duì)plotly的參數(shù)含義進(jìn)行說(shuō)明狮惜,隨著plotly版本的迭代更新高诺,部分參數(shù)的用法會(huì)有細(xì)微變化,具體參加官...
    惑也閱讀 49,802評(píng)論 0 34
  • 參考資料:Plotly_express官方API教程碾篡、Plotly_express官方畫(huà)圖教程 一虱而、概述 Plot...
    惑也閱讀 50,690評(píng)論 4 57
  • 一、導(dǎo)入包 二开泽、參數(shù)說(shuō)明 本文用到的部分參數(shù)說(shuō)明如下牡拇,僅供參考,具體見(jiàn)官方文檔眼姐; 當(dāng)只有1條數(shù)據(jù)時(shí)诅迷,默認(rèn)不展示圖例...
    惑也閱讀 9,636評(píng)論 0 3
  • 一、導(dǎo)入包 二众旗、參數(shù)說(shuō)明 本文用到的部分參數(shù)說(shuō)明如下罢杉,僅供參考,具體見(jiàn)官方文檔贡歧; barmode : 設(shè)置相同坐標(biāo)...
    惑也閱讀 3,813評(píng)論 1 4
  • 下面是本系列分享的第二篇滩租,關(guān)于線(xiàn)圖的分享赋秀。 事實(shí)上計(jì)劃中線(xiàn)圖和點(diǎn)圖應(yīng)該在一篇中介紹完畢,因?yàn)榫€(xiàn)圖內(nèi)容也不少還有其他...
    無(wú)邪Chaosless閱讀 2,541評(píng)論 1 0