Показать значения данных в виде диаграммы с plot_ly - PullRequest
0 голосов
/ 29 ноября 2018

Я новичок в 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

1 Ответ

0 голосов
/ 04 декабря 2018

Ваш код должен работать и отображать текст над полосами, но я не знаю, как выглядит ваш исходный набор данных.Если для каждой эмоции существует несколько значений, то в одном столбце будет больше значений.Затем вы можете сгруппировать по эмоциям и суммировать значения и просто отобразить эту сумму.

Я включил для вас 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")
...