使用r中的plot_ly()在折线图上的点上方显示文本标签

时间:2019-07-25 07:26:03

标签: r data-visualization r-plotly

我正在尝试使用ploy_ly()函数使折线图可视化。我需要在折线图上方显示标签。但是标签显示在这些点上,看起来很乱。

使用的数据帧如下:

  Quarter   average
1 2018 Q1     47.6
2 2018 Q2     46.4
3 2018 Q3     45.7
4 2018 Q4     45.5
5 2019 Q1     45.7
6 2019 Q2     46.3
7 2019 Q3     45.7

使用plot_ly()可视化折线图的代码如下:

plot_ly(teamAverageperweek, x = teamAverageperweek$Quarter,
                       text = teamAverageperweek$average,
                       hoverinfo = 'text',
                       hovertext = paste('Quarter of Date: ', teamAverageperweek$Quarter,
                                         '<br> Avg Hours Per Week: ',teamAverageperweek$average),
                       showlegend = FALSE)%>%
   add_trace(y = teamAverageperweek$average,
             type = 'scatter',
             mode = 'lines', 
             line = list(color = 'rgb(242,142,43)', 
                         width = 3)) %>%
   add_trace(x = teamAverageperweek$Quarter,
             y = teamAverageperweek$average,
             type = 'scatter',
             mode = 'markers', 
             marker = list(color = 'rgb(242,142,43)', 
                           size = 8)) %>%
   layout(
      yaxis = list(
       range = c(20,70),
       title = "Avg Hours Per Week"
     ) 
   ) %>%
  layout(hoverlabel = list(bgcolor= 'white')) %>%
  layout(showlegend = FALSE) %>%
  add_annotations(x = teamAverageperweek$Quarter,
                  y = teamAverageperweek$average,
                  text =  teamAverageperweek$average,
                  xref = "x",
                  yref = "y",
                  yanchor = 'center',
                  xanchor = 'top',
                  showarrow = FALSE)

是否可以在这些点上方显示文本标签?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

是的,可以使用textposition = "bottom center"

https://jsfiddle.net/dusthaines/hg1fpwue/,您可以找到文本位置的选项。

嗯,我对您的代码进行了很多修改,但是我认为这样更易读。希望它能对您有所帮助。

例如,您可以使用:

  • teamAverageperweek %>% plot_ly(...)已插入plot_ly(data = teamAverageperweek)

  • x = ~Quarter已插入teamAverageperweek$Quarter

  • 您只能使用一个跟踪,并将mode = 'lines+markers+text'设置为添加2条跟踪,然后使用annotations()

  • 您还可以设置layout(... , ...)的所有参数,并以逗号分隔。

这是您的代码,但已修改:

library(dplyr)
library(plotly)

# Yours data
teamAverageperweek = data.frame(
                        Quarter = c("2018 Q1","2018 Q2","2018 Q3","2018 Q4",
                                    "2019 Q1","2019 Q2","2019 Q3"),
                        average = c(47.6,46.4,45.7,45.5,
                                    45.7,46.3,45.7)
                        )
# The Plot
teamAverageperweek %>%
  plot_ly(x = ~Quarter,
        text = ~average,
        hoverinfo = 'text',
        hovertext = ~paste('Quarter of Date: ', Quarter,
                          '<br> Avg Hours Per Week: ',average),
        showlegend = FALSE)%>%
  add_trace(y = ~average,
            type = 'scatter',
            mode = 'lines+markers+text', 
            line = list(color = 'rgb(242,142,43)', 
                        width = 3),
            textposition = "bottom center", # here the text position
            marker = list(color = 'rgb(242,142,43)', 
                          size = 8)) %>%
  layout(
    yaxis = list(range = c(20,70),
                 title = "Avg Hours Per Week"
                 ),
    hoverlabel = list(bgcolor= 'white')
         )

在这里输出:

Here