r - 根据data.frame列在散点图中设置标记颜色
问题描述
我有一个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))
推荐阅读
- vb.net - 应用过滤器时出现 BindingSource 错误
- javascript - 如何在“emit”上运行异步函数的 eventEmitter 上捕获错误?
- java - Groovy - 修改 xml 文件值
- javascript - 防止单击事件将重复项添加到数组中,Vanilla JS
- spring-security - 登录后包含 # 字符的 Spring SAML 重定向 URL
- c++ - 如何使我的 CPP 控制台应用程序可安装/可再分发,这取决于一些外部文件?
- macos - 如何解决我的 Mac 终端中错误字符输出的问题?
- angular - Angular 在返回数据之前等待订阅完成
- reactjs - 如何在 reducer redux 中放置 2 个不同的有效负载?
- c# - 我是通过继承来实现系统的,但是有一个模棱两可的部分