使用 plot_ly 在条形图中显示数据值

Show data values in barchart with plot_ly

我是 plot_ly 的新手,但这个条形图工作正常:

library(plotly)
p <- plot_ly(emo_sum, x=~emotion, y=~count, type="bar", color=~emotion) %>%
  layout(xaxis=list(title=""), showlegend=FALSE,
         title="Testing plot_ly")

现在我正在尝试在每个条形图上方显示数据值。我找到了这个例子

这是用一组固定的值来完成的,但在我的例子中它看起来像这样:

library(plotly)
    p <- plot_ly(emo_sum, x=~emotion, y=~count, type="bar", color=~emotion) %>%
add_text(text=~count, hoverinfo='none', textposition = 'top', showlegend = FALSE, 
        textfont=list(size=20, color="black")) %>%
  layout(xaxis=list(title=""), showlegend=FALSE,
         title="Testing plot_ly")

但是不行

这里是emo_sum,因为无法附上所以贴上去,每一种情绪都有字数:

            count      emotion
anger          120        anger
anticipation   255 anticipation
disgust         85      disgust
fear           170         fear
joy            201          joy
sadness        121      sadness
surprise       106     surprise
trust          298        trust
negative       270     negative
positive       440     positive

您的代码应该可以工作,并且应该在条形图上方绘制文本,但我不知道您的原始数据集是什么样的。如果每种情绪有多个值,那么一个条上就会有更多的值。然后,您可以按情绪分组并对值求和,然后只显示该总和。

我为您提供了 2 个示例,第一个在条内绘制文本,第二个在条上方绘制文本:

library(plotly)

## Data
emo_sum <- data.frame(
  emotion=sample(c("anger", "joy", "fear", "anticipation", "disgust", "sadness"), 6, F),
  count=trunc(runif(6,0,100))
)

## Plot text inside Bar
plot_ly(emo_sum, x=~emotion, y=~count, type="bar", color=~emotion,
        text = ~count, textposition = 'auto', insidetextfont = list(size=20, color = 'black')) %>%
  layout(xaxis=list(title=""), showlegend=FALSE,
         title="Testing plot_ly")

## Plot text above Bar
plot_ly(emo_sum, x=~emotion, y=~count, type="bar", color=~emotion) %>%
  add_text(text=~count, hoverinfo='none', textposition = 'top', showlegend = FALSE,
           textfont=list(size=20, color="black")) %>%
  layout(xaxis=list(title=""), showlegend=FALSE,
         title="Testing plot_ly")