繁体   English   中英

为 Plotly R 中的条形图添加注释

[英]Adding annotations for the bar chart in Plotly R

我需要为 2019 年和 2020 年的图表添加注释。我到 2020 年有问题。我想按如下所示进行操作,但文本与 2019 年的文本重叠。

在此处输入图像描述

quarter <- c("Q1", "Q2", "Q3")
y_18 <- c(10, 16, 23)
y_19 <- c(12, 20, 29)
y_20 <- c(14, NA, NA)
TD <- data.frame(quarter, y_18, y_19, y_20)

fig <- plot_ly(TD, x = ~quarter, y = ~y_18, type = 'bar', name = '2018')
fig <- fig %>% add_trace(y = ~y_19, name = '2019')
fig <- fig %>% add_trace(y = ~y_20, name = '2020')
fig <- fig %>% layout(yaxis = list(title = 'count'), barmode = 'group')
fig <- fig %>% add_annotations( x = TD$quarter,
                                y = TD$y_19,
                                text = c("+2","+4","+6"),
                                xref = "x",
                                yref = "y",
                                showarrow = TRUE)

#my solutions:
fig <- fig %>% add_annotations( x = TD[1,1],
                                y = TD[1,3],
                                text = "+2",
                                xref = "x",
                                yref = "y",
                                showarrow = TRUE)

通过一点手动干预,您可以找出合适的 y 坐标(见下文)。 我离开了所有 3 个坐标,所以如果你想 label 那些带有 NA 的,只需替换代码中的空白注释和 showarrow FALSE 逻辑:

library(plotly)
quarter <- c("Q1", "Q2", "Q3")
y_18 <- c(10, 16, 23)
y_19 <- c(12, 20, 29)
y_20 <- c(14, NA, NA)
TD <- data.frame(quarter, y_18, y_19, y_20)

fig <- plot_ly(TD, x = ~quarter, y = ~y_18, type = 'bar', name = '2018')
fig <- fig %>% add_trace(y = ~y_19, name = '2019')
fig <- fig %>% add_trace(y = ~y_20, name = '2020')
fig <- fig %>% layout(yaxis = list(title = 'count'), barmode = 'group')
fig <- fig %>% add_annotations( x = TD$quarter,
                                y = TD$y_19,
                                text = c("+2","+4","+6"),
                                xref = "x",
                                yref = "y",
                                showarrow = TRUE)

fig %>% add_annotations( x = c(.25, 1.25, 2.25),
                         y = TD$y_20,
                         text = c("+2","",""),
                         xref = "x",
                         yref = "y",
                         showarrow = c(TRUE, FALSE, FALSE))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM