r - 将元素添加到 R 中现有的绘图中

标签 r plotly

我刚刚开始使用plotly,但还无法做一些像向现有绘图添加对象这样简单的事情。如何将线段添加到现有的空图中?

我已经尝试过这一点,但每次调用 add_segment 都会创建一个只有一个片段的新图:

p<-plot_ly()
add_segment(p,x=0,y=1,x=5,y=1)
add_segment(p,x=0,y=4,x=5,y=4)

我做错了什么?

最佳答案

答案:使用 %>% 运算符,如下所示:

p <- plot_ly(data, x = ~x)
p <- p %>% add_trace(y = ~trace_0, name = 'trace 0',mode = 'lines')
p

详细信息:

一种方法是使用 this example 中的管道 %>% 运算符其中下面的图是由下面的代码生成的:

plotly :

enter image description here

代码:

library(plotly)

set.seed(1)
trace_0 <- rnorm(100, mean = 5)
trace_1 <- rnorm(100, mean = 0)
trace_2 <- rnorm(100, mean = -5)
x <- c(1:100)

data <- data.frame(x, trace_0, trace_1, trace_2)

p <- plot_ly(data, x = ~x) %>%
  add_trace(y = ~trace_0, name = 'trace 0',mode = 'lines') %>%
  add_trace(y = ~trace_1, name = 'trace 1', mode = 'lines+markers') %>%
  add_trace(y = ~trace_2, name = 'trace 2', mode = 'markers')
p

逐步使用%>%:

代码步骤 1:

# step 1
p <- plot_ly(data, x = ~x)

# plot
p

绘制第 1 步:

enter image description here

代码步骤 2:

# step 1
p <- plot_ly(data, x = ~x)

# step 2
p <- p %>% add_trace(y = ~trace_0, name = 'trace 0',mode = 'lines')

# plot
p

绘制第 2 步:

enter image description here

对所有步骤进行编码:

# step 1
p <- plot_ly(data, x = ~x)

# step 2
p <- p %>% add_trace(y = ~trace_0, name = 'trace 0',mode = 'lines')

# step 3
p <- p %>% add_trace(y = ~trace_1, name = 'trace 1', mode = 'lines+markers')

# step 4
p <- p %>% add_trace(y = ~trace_2, name = 'trace 2', mode = 'markers')

# plot
p

绘制所有步骤:

enter image description here

编辑:回复评论

Is there any way to add elements without using the pipe?

据我所知,但我希望有人证明我错了。由于这是一个 [R] 问题,我猜您更熟悉如何逐步构建 ggplot 图,如下所示:

library(ggplot2)
g <- ggplot(diamonds, aes(x=carat, y=price, color=cut)) + geom_point()
g <- g + geom_smooth()
g

+ 方法不适用于plotly:

代码:

# step 1
p <- plot_ly(data, x = ~x)

# step 2
p <- p + add_trace(y = ~trace_0, name = 'trace 0',mode = 'lines')

错误:

Error in add_data(p, data) : argument "p" is missing, with no default

完全没有理由担心 %>% 运算符。 a %>% b 的含义类似于拿 a,然后用它做 b。据我所知,这首先出现在 magrittr封装,并广泛应用于梦幻dplyr包裹。当时我主要在摆弄 python,但这真的让我怀念R

关于r - 将元素添加到 R 中现有的绘图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58417619/

相关文章:

r - 与R中最近的日期合并

c++ - for循环在Rcpp中崩溃

r - R 中嵌套 ifelse 与字符列的替代

r - 列表和模式为列表的向量有什么区别?

r - 如何使用 plotly 在散点图中同时应用颜色/形状/大小?

python - 使用plotly python注释热图中的x轴标签位置

javascript - 将 Plot.ly 与外部脚本结合使用来绘制图表

r - lapply 是否有序应用函数?

python - Plotly - 如何在单个图中复制相同的直方图

R plotly 指定带有颜色参数的自定义图例名称