[英]Set marker color in plotly scatter plot based on data.frame column
我有一个data.frame
,我试图用绘制plotly
。 我想用两个变量绘制line
图,并根据第三个变量设置标记颜色。 下面的示例显示了使用mtcars
作为样本数据集的情况。
library(data.table)
library(plotly)
plot_ly(as.data.table(mtcars)[order(wt)]) %>%
add_trace(x = ~wt, y = ~mpg, color = ~vs, type = 'scatter', mode = 'lines+markers')
在我的实际数据集中,如mtcars
,变量可以采用离散值(0或1)。 默认情况下,在图例中使用plotly
将其视为连续变量。 我只想显示与变量可以假定的两个值相对应的两种颜色,而不显示任何颜色条。
我尝试将变量设置为一个因子,但是返回两个折线图,这不是我想要的:
plot_ly(as.data.table(mtcars)[order(wt)]) %>%
add_trace(x = ~wt, y = ~mpg, color = ~as.factor(vs), type = 'scatter', mode = 'lines+markers')
我还尝试根据第三个变量单独设置标记颜色:
plot_ly(as.data.table(mtcars)[order(wt)]) %>%
add_trace(x = ~wt, y = ~mpg, color = ~as.factor(vs), type = 'scatter', mode = 'lines+markers')
这行得通,但我无法指定两个levels
的颜色。 我尝试使用marker = list(colors = c('green', 'red', ...)
没有成功。
总而言之,我想为两个变量显示一条线图(均匀颜色),并将标记设置为我根据第三个变量的值指定的两种离散颜色(无颜色条)。
一种方法是手动设置每个标记的颜色,如下所示,您可以根据第三个变量vs
的值在下面的recode()
函数中指定颜色。
data <- data.frame(mtcars,stringsAsFactors = F)
data <- data %>%
arrange(wt) %>%
mutate(vs = as.character(vs),
color = recode(vs,`1` = "red",
`0` = "blue"))
plot_ly(data) %>%
add_trace(x = ~wt, y = ~mpg, type = 'scatter', mode = 'lines+markers',
marker = list(color = ~color))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.