r - 使用 r 中的 plot_ly() 在折线图中的点上方显示文本标签
问题描述
我正在尝试使用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)
是否可以在点上方显示文本标签?
提前致谢!!
解决方案
是的,有可能,您可以使用textposition = "bottom center"
.
在这里您可以找到文本位置的选项。
好吧,我修改了你的代码,但我认为这样更具可读性。我希望它可以帮助你。
例如,您可以使用:
teamAverageperweek %>% plot_ly(...)
安装的plot_ly(data = teamAverageperweek)
x = ~Quarter
安装的teamAverageperweek$Quarter
您只能使用一条迹线并设置
mode = 'lines+markers+text'
insted 添加 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')
)
这里的输出:
推荐阅读
- python - 使用 tf.map_fn 导出模型
- javascript - 单击下拉菜单中的文本框在 ReactJS 中不起作用
- javascript - 必要时不会隐藏自适应菜单
- symfony - 如何在 Doctrine 中按 IDENTITY 在存储库中搜索?
- ansible - 在 Ansible Play 级别问题中运行环境变量
- php - 添加产品价值以添加到购物车按钮
- ios - 如何在 ZStack SwiftUI 中删除填充
- json - 反序列化 reqwest 响应时找不到 json 方法
- webrtc - 由于混淆主机地址,当对等点不在 NAT 后面时,WebRTC 在现代浏览器中不起作用
- karate - 如何在空手道中评估 Json Key 中变量的值?