r - 添加 tickformat=% 时,图表值已乘以 100
问题描述
我有下面的堆积条,其中除了轴中的值和似乎已乘以 100 的悬停文本之外,一切正常。我试图通过将初始值除以来欺骗它,100
但后来我取回了舍入值(20
而不是19.8
)。我认为这是在我添加之后发生的tickformat=%
# data
Category<-c("First dose","Full vaccination")
`Uptake first dose`<-c(19.8,0)
`Uptake full vaccination`<-c(0,7.6)
`Not vaccinated`<-c(80.2,92.4)
ch5<-data.frame(Category,`Uptake first dose`,`Uptake full vaccination`,`Not vaccinated`)
# transform data
data.long <- ch5 %>%
pivot_longer(cols = -Category,
names_to = "vac",
values_to = "percent") %>%
mutate(vac = str_replace_all(vac, "\\.", " "),
vac = fct_rev(factor(vac)))
# add plot
plot_ly(data.long) %>%
add_bars(y = ~Category,
x = ~percent,
color = ~vac,
text = ~vac,
colors = c("#458d35", "#63bb47", "#e6e7e8"),
hovertemplate = paste('<b>%{y}</b>',
'<br>%{text}: %{x} ',
'<extra></extra>')) %>%
layout(font = list(color = '#a2a2a2'),barmode = "stack",
bargap = 0.7,
yaxis = list(fixedrange = TRUE,autorange="reversed",
title = "",
showticklabels = FALSE,
showgrid = FALSE,
showline = FALSE,
zeroline = FALSE),
xaxis = list(fixedrange = TRUE,title = "",
tickformat = "%",
zeroline = FALSE,
showgrid = FALSE),
hoverlabel = list(bgcolor = "black",
bordercolor = "black",
font = list(color = "white")),
shapes = list(type = "line",
y0 = 0, y1 = 1, yref = "paper",
x0 = 70, x1 = 70),
annotations = list(text = "Target (70%)",
showarrow = FALSE,
x = 70,
y = 1.05,
yref = "paper"),
legend = list(orientation = 'h'))
解决方案
使用ticksuffix = '%'
.
library(plotly)
plot_ly(data.long) %>%
add_bars(y = ~Category,
x = ~percent,
color = ~vac,
text = ~vac,
colors = c("#458d35", "#63bb47", "#e6e7e8"),
hovertemplate = paste('<b>%{y}</b>',
'<br>%{text}: %{x} ',
'<extra></extra>')) %>%
layout(font = list(color = '#a2a2a2'),barmode = "stack",
bargap = 0.7,
yaxis = list(fixedrange = TRUE,autorange="reversed",
title = "",
showticklabels = FALSE,
showgrid = FALSE,
showline = FALSE,
zeroline = FALSE),
xaxis = list(fixedrange = TRUE,title = "",ticksuffix = '%',
zeroline = FALSE,
showgrid = FALSE),
hoverlabel = list(bgcolor = "black",
bordercolor = "black",
font = list(color = "white")),
shapes = list(type = "line",
y0 = 0, y1 = 1, yref = "paper",
x0 = 70, x1 = 70),
annotations = list(text = "Target (70%)",
showarrow = FALSE,
x = 70,
y = 1.05,
yref = "paper"),
legend = list(orientation = 'h'))
推荐阅读
- json - 我希望 Grafana 计算成功与失败 HTTP 响应的比率,并将这两个指标绘制在一个图表中。我怎样才能做到这一点?
- r - 尽管使用了逗号,但删除带有 complete.cases、未定义列错误的 NA
- java - match() 方法的模式匹配无法正常工作
- python - ValueError:由 4 减去 5 导致的负尺寸大小
- ffmpeg - ffmpeg strftime 对 Windows 没有影响
- node.js - Firebase 的云函数 - getaddrinfo EAI_GAIN site.com:443
- php - 在php中的几个间隔之间生成一个随机数
- wordpress - wordpress 不断重定向到已删除的页面
- sql-server - 通过链接到 SQL 服务器数据库的 MS Access 以多对多关系(中间表)插入数据
- azure-active-directory - 我是否可以在用户通过 Azure AD SSO 进行身份验证的外部网站/应用程序的 iFrame 中使用 Sharepoint 视图