当我们将悬停标签移到 R 中 Plotly 图表的错误栏上时,有什么方法可以禁用悬停标签吗?
Is there any way to disable the hover label when we move it over the error bars in Plotly graph in R?
当我们将悬停标签移到错误栏上时,有什么方法可以禁用悬停标签吗?我正在使用 ggplotly 绘制图表。当光标移动到图表顶部时,我正在使用工具提示函数来表示条形图中的值。
Source_Data <-
data.frame(
key = c(1, 1, 1, 2, 2, 2, 3, 3, 3),
Product_Name = c(
"Table",
"Table",
"Chair",
"Table",
"Bed",
"Bed",
"Sofa",
"Chair",
"Sofa"
),
Product_desc = c("XX", "XXXX", "YY", "X", "Z", "ZZZ", "A", "Y", "A"),
sd = c(0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.7, 0.8, 0.5),
Cost = c(1, 2, 3, 4, 2, 3, 4, 5, 6)
)
ggplotly((
Source_Data %>%
ggplot(
aes(
Product_Name,
Cost,
ymin = Cost - sd,
ymax = Cost + sd,
fill = Product_desc,
text = paste("Product Name:", Product_Name, "<br>", "Cost:", Cost)
)
) +
geom_col(position = position_dodge2(width = .9, preserve = "single")) +
geom_errorbar(position = position_dodge2(
width = .9,
preserve = "single",
padding = .5
)) +
geom_text(
aes(y = Cost + sd, label = Cost),
position = position_dodge2(width = .9),
vjust = -1
) +
facet_wrap( ~ key, scales = "free_x", strip.position = "bottom") +
theme(strip.placement = "outside") +
theme_bw()
),
tooltip = "text"
)
当我将光标移到条上时,我得到了文本值,这很好。但我希望仅当我将光标移到条上时才显示它,并且当我移到错误条上时不应弹出任何值。
我愿意接受所有建议。
您只能在 geom_col
部分定义 text
变量:
library(ggplot2)
library(plotly)
library(dplyr)
Source_Data <-
data.frame(
key = c(1, 1, 1, 2, 2, 2, 3, 3, 3),
Product_Name = c(
"Table",
"Table",
"Chair",
"Table",
"Bed",
"Bed",
"Sofa",
"Chair",
"Sofa"
),
Product_desc = c("XX", "XXXX", "YY", "X", "Z", "ZZZ", "A", "Y", "A"),
sd = c(0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.7, 0.8, 0.5),
Cost = c(1, 2, 3, 4, 2, 3, 4, 5, 6)
)
ggplotly((
Source_Data %>%
ggplot(
aes(
Product_Name,
Cost,
ymin = Cost - sd,
ymax = Cost + sd,
fill = Product_desc
# ,
# text = paste("Product Name:", Product_Name, "<br>", "Cost:", Cost)
)
) +
geom_errorbar(position = position_dodge2(
width = .9,
preserve = "single",
padding = .5
)) +
# geom_text(aes(y = Cost + sd, label = Cost),
# position = position_dodge2(width = .9),
# vjust = -1
# ) +
geom_col(position = position_dodge2(width = .9, preserve = "single"),
aes(text = paste("Product Name:", Product_Name, "<br>", "Cost:", Cost))) +
facet_wrap( ~ key, scales = "free_x", strip.position = "bottom") +
theme(strip.placement = "outside") +
theme_bw()
),
tooltip = "text"
)
编辑:
考虑到张贴者观察到的问题,以保持元素在(闪亮?弹性?)仪表板中排列,如果这是一个选项,那么在 plotly 布局中设置 autoscale = FALSE
可能会有所帮助。也许以下内容可以用于绘图部分:
p1 <- ggplot(data = Source_Data, aes(Product_Name, Cost, ymin = Cost - sd,
ymax = Cost + sd, fill = Product_desc)) +
geom_col(position = position_dodge2(width = .9, preserve = "single"),
aes(text = paste("Product Name:", Product_Name, "<br>", "Cost:", Cost))) +
geom_errorbar(position = position_dodge2(width = .9, preserve = "single",
padding = .9)) +
facet_wrap( ~ key, scales = "free_x", strip.position = "bottom") +
theme(strip.placement = "outside") +
theme_bw()
ggplotly(p1, tooltip = "text") %>% plotly::layout(autosize=FALSE)
当我们将悬停标签移到错误栏上时,有什么方法可以禁用悬停标签吗?我正在使用 ggplotly 绘制图表。当光标移动到图表顶部时,我正在使用工具提示函数来表示条形图中的值。
Source_Data <-
data.frame(
key = c(1, 1, 1, 2, 2, 2, 3, 3, 3),
Product_Name = c(
"Table",
"Table",
"Chair",
"Table",
"Bed",
"Bed",
"Sofa",
"Chair",
"Sofa"
),
Product_desc = c("XX", "XXXX", "YY", "X", "Z", "ZZZ", "A", "Y", "A"),
sd = c(0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.7, 0.8, 0.5),
Cost = c(1, 2, 3, 4, 2, 3, 4, 5, 6)
)
ggplotly((
Source_Data %>%
ggplot(
aes(
Product_Name,
Cost,
ymin = Cost - sd,
ymax = Cost + sd,
fill = Product_desc,
text = paste("Product Name:", Product_Name, "<br>", "Cost:", Cost)
)
) +
geom_col(position = position_dodge2(width = .9, preserve = "single")) +
geom_errorbar(position = position_dodge2(
width = .9,
preserve = "single",
padding = .5
)) +
geom_text(
aes(y = Cost + sd, label = Cost),
position = position_dodge2(width = .9),
vjust = -1
) +
facet_wrap( ~ key, scales = "free_x", strip.position = "bottom") +
theme(strip.placement = "outside") +
theme_bw()
),
tooltip = "text"
)
当我将光标移到条上时,我得到了文本值,这很好。但我希望仅当我将光标移到条上时才显示它,并且当我移到错误条上时不应弹出任何值。
我愿意接受所有建议。
您只能在 geom_col
部分定义 text
变量:
library(ggplot2)
library(plotly)
library(dplyr)
Source_Data <-
data.frame(
key = c(1, 1, 1, 2, 2, 2, 3, 3, 3),
Product_Name = c(
"Table",
"Table",
"Chair",
"Table",
"Bed",
"Bed",
"Sofa",
"Chair",
"Sofa"
),
Product_desc = c("XX", "XXXX", "YY", "X", "Z", "ZZZ", "A", "Y", "A"),
sd = c(0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.7, 0.8, 0.5),
Cost = c(1, 2, 3, 4, 2, 3, 4, 5, 6)
)
ggplotly((
Source_Data %>%
ggplot(
aes(
Product_Name,
Cost,
ymin = Cost - sd,
ymax = Cost + sd,
fill = Product_desc
# ,
# text = paste("Product Name:", Product_Name, "<br>", "Cost:", Cost)
)
) +
geom_errorbar(position = position_dodge2(
width = .9,
preserve = "single",
padding = .5
)) +
# geom_text(aes(y = Cost + sd, label = Cost),
# position = position_dodge2(width = .9),
# vjust = -1
# ) +
geom_col(position = position_dodge2(width = .9, preserve = "single"),
aes(text = paste("Product Name:", Product_Name, "<br>", "Cost:", Cost))) +
facet_wrap( ~ key, scales = "free_x", strip.position = "bottom") +
theme(strip.placement = "outside") +
theme_bw()
),
tooltip = "text"
)
编辑:
考虑到张贴者观察到的问题,以保持元素在(闪亮?弹性?)仪表板中排列,如果这是一个选项,那么在 plotly 布局中设置 autoscale = FALSE
可能会有所帮助。也许以下内容可以用于绘图部分:
p1 <- ggplot(data = Source_Data, aes(Product_Name, Cost, ymin = Cost - sd,
ymax = Cost + sd, fill = Product_desc)) +
geom_col(position = position_dodge2(width = .9, preserve = "single"),
aes(text = paste("Product Name:", Product_Name, "<br>", "Cost:", Cost))) +
geom_errorbar(position = position_dodge2(width = .9, preserve = "single",
padding = .9)) +
facet_wrap( ~ key, scales = "free_x", strip.position = "bottom") +
theme(strip.placement = "outside") +
theme_bw()
ggplotly(p1, tooltip = "text") %>% plotly::layout(autosize=FALSE)