Shiny应用中Y轴标签宽度导致两个图表日期对齐偏移问题
问题原因
上下两个Plotly图表X轴日期错位,核心是因为上方图表Y轴数值较长,占用了更多水平宽度,下方图表隐藏了Y轴标签,两者实际绘图区域宽度不一致导致的。你提到的将Y轴大数值缩写为k单位的方案可以有效减少Y轴标签宽度,解决对齐问题,也可以通过固定绘图边距的方式彻底对齐。
方案1:Y轴数值格式化为k单位
借助scales包的SI单位格式化函数,自动将千位以上数值转换为带k/M等后缀的短格式,修改上方绘图代码即可。如果运行报错可先执行install.packages("scales")安装依赖包:
output$detailed_plot_2<-renderPlotly({ p <- ggplot(data, aes(x=day, y=value)) + geom_line() + xlab("") + # 新增这行格式化Y轴标签 scale_y_continuous(labels = scales::label_number_si()) ggplotly(p) })
方案2:统一固定绘图边距(更通用)
如果不需要修改Y轴数值展示样式,可以统一设置两个Plotly图表的左边距,强制绘图区域宽度完全一致,不受Y轴标签长度影响:
server <- function(input, output) { output$detailed_plot_2<-renderPlotly({ p <- ggplot(data, aes(x=day, y=value)) + geom_line() + xlab("") # 统一设置左边距为60px ggplotly(p) %>% layout(margin = list(l = 60)) }) output$detailed_plot_22<-renderPlotly({ plot <-data %>% ggplot(aes(day,value)) + geom_col() + labs(y = "", x = "") + theme(axis.text.x = element_blank(), axis.text.y = element_blank(), axis.line = element_line(colour = 'black')) # 和上方图表设置相同的左边距 ggplotly(plot) %>% layout(margin = list(l = 60)) }) }
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

