使用 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")
我是 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")