2

我想创建一个bar plot(带有plotly包),它(几个月)将拥有red horizontal line(获得)。我希望,下面的图表更准确地显示了我的问题。

在此处输入图像描述

获取第一个图所需的代码和数据:

library("plotly")
library("dplyr")

data.frame(miesiac_label = as.character(as.roman(c(1:12))),
           miesiac = c(1:12),
           ile = c(12000, 12100, 11100, 12000, 12000, 11900, 12200, 12100, 6000, 12100, 12100, 12100),
           gain = c(rep(NA, 7), 11000, 12000, 12000, 12000, 12000)) -> dane
dane$miesiac_label <- factor(dane$miesiac_label, levels = dane[["miesiac_label"]])

plot_ly(dane) %>%
    add_trace(x = ~miesiac_label, y = ~ile,
              type = 'bar', marker = list(color = '#99d3df')) %>%
    add_trace(x = ~miesiac_label, y = ~gain, name = 'Gain', 
              type = "scatter", mode='lines+markers', marker = list(color = 'red'),
              line = list(color = 'red'))

我认为我应该有一个连续的规模来做到这一点,在这之后只是改变x axis labels,但我不知道如何改变那些标签(当然,我首先尝试在谷歌中找到它)......

非常感谢你的帮助!

4

2 回答 2

2

像这样的东西对你有用吗?您可以调整 中的数字add_segments

 a <- list(
  title = "miesiac_label",
  showticklabels = TRUE,
  tickmode= "array",
  ticktext = as.character(as.roman(c(1:12))),
 tickvals = c(1:12)
)

 plot_ly(dane) %>%
    add_bars(x = ~miesiac, y = ~ile) %>%
    add_segments(x = 7.5, xend = 8.5, y = 10000, yend = ~10000, line = list(dash = "dash")) %>%
    add_segments(x = 8.5, xend = 12.5, y = 12000, yend = ~12000, line = list(dash = "dash")) %>% 
    layout(showlegend = FALSE, xaxis =  a) 
于 2016-12-06T21:11:36.580 回答
1

我已经设法构建了您想要使用ggplot的东西和奇妙的东西ggplotly()

为 ggplot 标准正常执行此操作会导致悬停时出现可怕的工具提示,但这可以通过调用中的text美学和tooltip参数进行调整ggplotly

例如:

ggplot(dane, aes(x = miesiac_label, y = ile)) +
  geom_bar(aes(text = paste("x:", miesiac_label, "y:",ile)),
                            stat = "identity", fill = "#99d3df") +
  geom_segment(aes(x = miesiac - 0.5, xend = miesiac + 0.5, 
                   y = gain, yend = gain, 
                   text = paste0("gain: ",gain))
               , colour = "red"
               , linetype = 2)

ggplotly(tooltip = "text")

结果如下图: 在此处输入图像描述

于 2016-12-06T13:14:05.950 回答