我正在尝试在R中的plot_ly中创建一个有许多行的图。我希望能够使用选择工具。一个例子如下:
library(plotly)
trace_0 <- rnorm(100, mean = 0)
trace_1 <- rnorm(100, mean = 0)
trace_2 <- rnorm(100, mean = 0)
x <- c(1:100)
data <- data.frame(x, trace_0, trace_1, trace_2)
plot_ly(data, x = ~x, y = ~trace_0, name = 'trace 0', type = 'scatter', mode = 'lines') %>%
add_trace(y = ~trace_1, name = 'trace 1', mode = 'lines') %>%
add_trace(y = ~trace_2, name = 'trace 2', mode = 'lines')
基于这个例子,我在根据我的目标定制它时有两个问题:
1)在上面的例子中,数据的维度是100行和4列。假设我有一个100行50列的数据框。是否有更好的方法来添加每个新行(通过add_trace),还是需要在for-loop中为49行添加?
2)有没有办法我仍然可以获得“选择”选项。有时,当使用plot_ly时,会出现一个框和套索选择工具。但是,出于某种原因,我默认情况下无法得到这个情节。
如果您对这些目标有任何建议,我将非常感谢您的意见!谢谢。
答案 0 :(得分:0)
您可以尝试:
library(plotly)
library(reshape2)
# some reproducible data
d <- cbind.data.frame(x=1:nrow(iris), iris[,-5])
x Sepal.Length Sepal.Width Petal.Length Petal.Width
1 1 5.1 3.5 1.4 0.2
2 2 4.9 3.0 1.4 0.2
3 3 4.7 3.2 1.3 0.2
4 4 4.6 3.1 1.5 0.2
5 5 5.0 3.6 1.4 0.2
6 6 5.4 3.9 1.7 0.4
# transform to long format using reshape's melt() function
d_long <- melt(d, id.vars ="x" )
# plot the lines using the group argument for different traces.
plot_ly(d_long, x= x, y=value, group= variable, type= "line")
第二个问题的解决方案可能是dragmode
。将以下值中的一个添加到绘图中:
c("zoom", "pan", "select", "lasso", "orbit", "turntable")
plot_ly(d_long, x= x, y= value, group= variable, type= "line") %>%
layout(dragmode = "lasso")
同时检查plotly website上的布局参考。但我不确定图标是否
修改强>
最新的情节版本plotly_4.5.2
稍微改变了语法。现在,您必须为行图指定type
到"scatter"
或"scattergl"
以及mode
到"line"
。 group参数将按颜色或group_by()
设置。不幸的是,没有"lasso"
或"select
&#34;完全在行模式下运行。因此,您必须使用"lines+markers"
模式。使用dragmode,您可以指定预先选择的功能。
plot_ly(d_long, x= ~x, y= ~value, type = 'scatter', mode = 'lines+markers', color = ~variable) %>% layout(dragmode="lasso")
答案 1 :(得分:0)