13.4 双轴图
模拟一组数据
set.seed(2020)
dat <- data.frame(
dt = seq(from = as.Date("2020-01-01"), to = as.Date("2020-01-31"), by = "day"),
search_qv = sample(100000:1000000, size = 31, replace = T)
) %>%
transform(valid_click_qv = sapply(search_qv, rbinom, n = 1, prob = 0.5)) %>%
transform(qv_ctr = valid_click_qv / search_qv)hoverinfo = "text" 表示 tooltips 使用指定的 text 映射,而 visible = "legendonly" 表示图层默认隐藏不展示,只在图例里显示,有时候很多条线,默认只是展示几条而已。举例如下
plot_ly(data = dat) %>%
add_bars(
x = ~dt, y = ~search_qv, color = I("gray80"), name = "搜索 QV",
text = ~ paste0(
"日期:", dt, "<br>",
"点击 QV:", format(valid_click_qv, big.mark = ","), "<br>",
"搜索 QV:", format(search_qv, big.mark = ","), "<br>",
"QV_CTR:", scales::percent(qv_ctr, accuracy = 0.01), "<br>"
),
hoverinfo = "text"
) %>%
add_bars(
x = ~dt, y = ~valid_click_qv, color = I("gray60"), name = "点击 QV",
text = ~ paste0(
"日期:", dt, "<br>",
"点击 QV:", format(valid_click_qv, big.mark = ","), "<br>",
"搜索 QV:", format(search_qv, big.mark = ","), "<br>",
"QV_CTR:", scales::percent(qv_ctr, accuracy = 0.01), "<br>"
), visible = "legendonly",
hoverinfo = "text"
) %>%
add_lines(
x = ~dt, y = ~qv_ctr, name = "QV_CTR", yaxis = "y2", color = I("gray40"),
text = ~ paste("QV_CTR:", scales::percent(qv_ctr, accuracy = 0.01), "<br>"),
hoverinfo = "text",
line = list(shape = "spline", width = 3, dash = "line")
) %>%
layout(
title = "",
yaxis2 = list(
tickfont = list(color = "black"),
overlaying = "y",
side = "right",
title = "QV_CTR(%)",
# ticksuffix = "%", # 设置坐标轴单位
tickformat = '.1%', # 设置坐标轴刻度
showgrid = F, automargin = TRUE
),
xaxis = list(title = "日期", showgrid = F, showline = F),
yaxis = list(title = " ", showgrid = F, showline = F),
margin = list(r = 20, autoexpand = T),
legend = list(
x = 0, y = 1, orientation = "h",
title = list(text = " ")
)
)图 13.4: 双轴图