Plotly R中的分组线图:如何控制线颜色?

Plotly R中的分组线图:如何控制线颜色?,r,plotly,R,Plotly,我对同一个研究对象进行了一系列“配对”观察,我正试图构建一个意大利面图,将这些观察可视化,如下所示: library(plotly) df <- data.frame(id = rep(1:10, 2), type = c(rep('a', 10), rep('b', 10)), state = rep(c(0, 1), 10), values = c(rnorm(10, 2, 0.5),

我对同一个研究对象进行了一系列“配对”观察,我正试图构建一个意大利面图,将这些观察可视化,如下所示:

library(plotly)
df <- data.frame(id = rep(1:10, 2),
                 type = c(rep('a', 10), rep('b', 10)),
                 state = rep(c(0, 1), 10),
                 values = c(rnorm(10, 2, 0.5), rnorm(10, -2, 0.5)))
df <- df[order(df$id), ]
plot_ly(df, x = type, y = values, group = id, type = 'line') %>%
  layout(showlegend = FALSE)
library(plotly)

df您可以像这样将线条设置为相同的颜色

plot_ly(df, x = type, y = values, group = id, type = 'scatter', mode = 'lines+markers', 
        line=list(color='#000000'), showlegend = FALSE)

对于“奖金”,一个问题的价格为两个“如何使用不同于分组所用变量的颜色”:

如果您只打印标记,而没有线条,这将很简单,因为您可以简单地向
marker.color
提供颜色向量。然而,不幸的是,
line.color
只接受一个值,而不是一个向量,所以我们需要解决这个限制

如果数据不太多(在这种情况下,该方法会变慢,下面给出了一种更快的方法),您可以通过将每条线的颜色作为单独的轨迹逐个添加到循环中(循环id)来单独设置它们的颜色

并使用
connectgaps=FALSE
进行打印:

plot_ly(df, x = type, y = values, group = state, type = 'scatter', mode = 'lines+markers', 
        showlegend = FALSE,
        connectgaps=FALSE)

您可以像这样将线条设置为相同的颜色

plot_ly(df, x = type, y = values, group = id, type = 'scatter', mode = 'lines+markers', 
        line=list(color='#000000'), showlegend = FALSE)

对于“奖金”,一个问题的价格为两个“如何使用不同于分组所用变量的颜色”:

如果您只打印标记,而没有线条,这将很简单,因为您可以简单地向
marker.color
提供颜色向量。然而,不幸的是,
line.color
只接受一个值,而不是一个向量,所以我们需要解决这个限制

如果数据不太多(在这种情况下,该方法会变慢,下面给出了一种更快的方法),您可以通过将每条线的颜色作为单独的轨迹逐个添加到循环中(循环id)来单独设置它们的颜色

并使用
connectgaps=FALSE
进行打印:

plot_ly(df, x = type, y = values, group = state, type = 'scatter', mode = 'lines+markers', 
        showlegend = FALSE,
        connectgaps=FALSE)

第一部分工作得很好。在第二部分中,我可能会使用
子图
,因为循环机制不干净,而且在许多数据点上也会带来处理开销。如果有大量的线要绘制,请参阅更新,以更快的方式完成第二部分。PS不知道你说的“不干净”是什么意思?当然,当应用于大数据时,循环速度很慢,但在我看来,它在概念上是一种干净、简单的方法。解决这个问题的非常聪明的方法。我会选择这个。喜欢绘声绘色的
,但不太喜欢它不按R的方式处理事情。在前面,我指的是clean,在循环中添加大量跟踪不是R方式。我同意它在概念上是干净的。
Group
已被弃用,请改用
split
。此外,您现在需要在
x=
y=
之后添加
~
。请看我在问题中的评论。第一部分效果很好。在第二部分中,我可能会使用
子图
,因为循环机制不干净,而且在许多数据点上也会带来处理开销。如果有大量的线要绘制,请参阅更新,以更快的方式完成第二部分。PS不知道你说的“不干净”是什么意思?当然,当应用于大数据时,循环速度很慢,但在我看来,它在概念上是一种干净、简单的方法。解决这个问题的非常聪明的方法。我会选择这个。喜欢绘声绘色的
,但不太喜欢它不按R的方式处理事情。在前面,我指的是clean,在循环中添加大量跟踪不是R方式。我同意它在概念上是干净的。
Group
已被弃用,请改用
split
。此外,您现在需要在
x=
y=
之后添加
~
。请参阅问题中的我的评论。偶然发现这个问题,正在寻找一种使用plotly命令绘制多行的方法。在当前的plotly软件包(4.7.1)中,您需要
plot_-ly(df,x=~type,y=~values,type='scatter',mode='lines',split=~id)%>%layout(showlegend=FALSE)
才能使此示例起作用。偶然发现此问题,正在寻找一种使用一个plotly命令绘制多行的方法。在当前的plotly包(4.7.1)中,您需要
plotly(df,x=~type,y=~values,type='scatter',mode='lines',split=~id)%>%layout(showlegend=FALSE)
才能使此示例生效。