我有一个如下所示的数据集:
date food transp housing other
0 2015-06-01 1510 45.58 0 101.5
1 2015-07-01 1163.91 74.14 210 106.7
2 2015-08-01 101.3 95.03 210 54.5
3 2015-09-01 1131.67 22.28 210 46.3
4 2015-10-01 818.44 88.88 815.2 47.2
我的目标是链接chart中的图表“奥运奖牌”,它通过python在plolty中实现,我试图在R中复制。我能做的是this
在第一个glace它看起来很相似,但我没有包含所有行的下拉菜单'All'。目前没有办法带回所有线条的情节,这与第一张图表中的选项“全部”不同。下面的代码显示了我如何创建第二个图。非常感谢任何帮助。
plot <- plot_ly(newf, x = ~round_date, y = ~other, name='other', type='scatter',mode='lines+markers') %>%
add_trace(y = ~food, name = 'food') %>%
add_trace(y = ~housing, name = 'housing') %>%
add_trace(y = ~transport, name = 'transport') %>%
layout(
title = "Button Restyle",
xaxis = list(domain = c(0.1, 1)),
yaxis = list(title = "y"),
updatemenus = list(
list(
type = "buttons",
y = 0.8,
label = 'Category',
buttons = list(
list(method = "restyle",
args = list("y",list(~other)),
label = "houshold"),
list(method = "restyle",
args = list("y",list(~food)),
label = "communication"),
list(method = "restyle",
args = list("y",list(~housing)),
label = "food"),
list(method = "restyle",
args = list("y",list(~transport)),
label = "transport")
))))
答案 0 :(得分:1)
不是改变y值,而是隐藏/显示轴。您可以通过将数组传递给visible属性来隐藏和显示轴。 args = list('visible', c(TRUE, FALSE, FALSE))
将显示第一个轴并隐藏其他两个轴。
请参阅下面的完整代码或here在线。
当改变y值时,从散点图变为条形图会搞砸restyle过程,你会得到4个不同颜色但y值相同的条形。
library(plotly)
plot_ly(mtcars, x = rownames(mtcars), y = ~mpg, name='mpg', type='scatter', mode='markers') %>%
add_trace(y = ~hp, name = 'power', type='scatter', mode='markers') %>%
add_trace(y = ~qsec, name = 'qsec', type='scatter', mode='markers') %>%
layout(
updatemenus = list(
list(
type = "buttons",
x = -0.1,
y = 0.6,
label = 'Category',
buttons = list(
list(method = "restyle",
args = list('visible', c(TRUE, TRUE, TRUE)),
label = "View all"),
list(method = "restyle",
args = list('visible', c(FALSE, FALSE, FALSE)),
label = "Hide all")
)
),
list(
type = "buttons",
x = -0.1,
y = 0.7,
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")
)
)
)
)