使用 R plotly 下拉菜单到 select 变量并继续使用颜色变量作为跟踪
Using R plotly dropdown menu to select variable and keep ussing the colour variable as a trace
我在 R 中的绘图中添加了一个变量选择器(遵循通常的方法,即从绘图中隐藏不必要的痕迹)
library(plotly)
dat <- mtcars
dat$cyl <- factor(dat$cyl)
dat$car <- rownames(mtcars)
dat %>%
plot_ly(x = ~car, y = ~mpg,
name='mpg', type='scatter', mode='markers') %>%
add_trace(y = ~hp, name = 'hp', type='scatter', mode='markers') %>%
add_trace(y = ~qsec, name = 'qsec', type='scatter', mode='markers') %>%
layout(
updatemenus = list(
list(
type = "list",
label = 'Category',
buttons = list(
list(method = "restyle",
args = list('visible', c(TRUE, FALSE, FALSE)),
label = "mpg"),
list(method = "restyle",
args = list('visible', c(FALSE, TRUE, FALSE)),
label = "hp"),
list(method = "restyle",
args = list('visible', c(FALSE, FALSE, TRUE)),
label = "qsec")
)
)
)
)
代码完成了工作,但它覆盖了 group/color 变量作为跟踪选择器的标准用法,因为我们已经设置了跟踪。
color/group 变量的标准用法是这样的
plot_ly(group_by(dat,cyl), x = ~car, y = ~mpg, color = ~cyl, type='scatter', mode='markers')
注意:我使用 group_by()
因为 group = ...
已被弃用。
是否可以将下拉菜单添加为变量选择器并且仍然能够使用 color/group 变量来隐藏和显示所选变量的数据?
我尝试添加 color= ~cyl
但是,如您所想,它不起作用。
提前致谢!!
试试这个。首先,我将数据集转换为长格式,以便变量成为一个变量 name
的类别,其值在 value
中。其次,我将 name
映射到符号上,将 cyl
映射到颜色上。第三。我调整了图例标签,以便通过将 cyl
映射到 add_trace
中的名称,只有 cyl
出现在图例中。
library(plotly)
dat <- mtcars
dat$cyl <- factor(dat$cyl)
dat$car <- rownames(mtcars)
dat %>%
tidyr::pivot_longer(c(mpg, hp, qsec)) %>%
plot_ly(x = ~car, y = ~value, color = ~cyl, symbol = ~name) %>%
add_trace(type='scatter', mode='markers', name = ~cyl) %>%
layout(
updatemenus = list(
list(
type = "list",
label = 'Category',
buttons = list(
list(method = "restyle",
args = list('visible', c(TRUE, FALSE, FALSE)),
label = "hp"),
list(method = "restyle",
args = list('visible', c(FALSE, TRUE, FALSE)),
label = "mpg"),
list(method = "restyle",
args = list('visible', c(FALSE, FALSE, TRUE)),
label = "qsec")
)
)
)
)
我在 R 中的绘图中添加了一个变量选择器(遵循通常的方法,即从绘图中隐藏不必要的痕迹)
library(plotly)
dat <- mtcars
dat$cyl <- factor(dat$cyl)
dat$car <- rownames(mtcars)
dat %>%
plot_ly(x = ~car, y = ~mpg,
name='mpg', type='scatter', mode='markers') %>%
add_trace(y = ~hp, name = 'hp', type='scatter', mode='markers') %>%
add_trace(y = ~qsec, name = 'qsec', type='scatter', mode='markers') %>%
layout(
updatemenus = list(
list(
type = "list",
label = 'Category',
buttons = list(
list(method = "restyle",
args = list('visible', c(TRUE, FALSE, FALSE)),
label = "mpg"),
list(method = "restyle",
args = list('visible', c(FALSE, TRUE, FALSE)),
label = "hp"),
list(method = "restyle",
args = list('visible', c(FALSE, FALSE, TRUE)),
label = "qsec")
)
)
)
)
代码完成了工作,但它覆盖了 group/color 变量作为跟踪选择器的标准用法,因为我们已经设置了跟踪。
color/group 变量的标准用法是这样的
plot_ly(group_by(dat,cyl), x = ~car, y = ~mpg, color = ~cyl, type='scatter', mode='markers')
注意:我使用 group_by()
因为 group = ...
已被弃用。
是否可以将下拉菜单添加为变量选择器并且仍然能够使用 color/group 变量来隐藏和显示所选变量的数据?
我尝试添加 color= ~cyl
但是,如您所想,它不起作用。
提前致谢!!
试试这个。首先,我将数据集转换为长格式,以便变量成为一个变量 name
的类别,其值在 value
中。其次,我将 name
映射到符号上,将 cyl
映射到颜色上。第三。我调整了图例标签,以便通过将 cyl
映射到 add_trace
中的名称,只有 cyl
出现在图例中。
library(plotly)
dat <- mtcars
dat$cyl <- factor(dat$cyl)
dat$car <- rownames(mtcars)
dat %>%
tidyr::pivot_longer(c(mpg, hp, qsec)) %>%
plot_ly(x = ~car, y = ~value, color = ~cyl, symbol = ~name) %>%
add_trace(type='scatter', mode='markers', name = ~cyl) %>%
layout(
updatemenus = list(
list(
type = "list",
label = 'Category',
buttons = list(
list(method = "restyle",
args = list('visible', c(TRUE, FALSE, FALSE)),
label = "hp"),
list(method = "restyle",
args = list('visible', c(FALSE, TRUE, FALSE)),
label = "mpg"),
list(method = "restyle",
args = list('visible', c(FALSE, FALSE, TRUE)),
label = "qsec")
)
)
)
)