如何将嵌入reactable的Plotly图表设置为类迷你图样式?
Reactable中嵌入紧凑迷你Plotly小提琴图的调整方案
在reactable单元格中嵌入Plotly小提琴图时,想要做成紧凑的迷你图样式,虽然通过height=50缩小了高度,但存在线条过粗、轴标签/刻度占用过多空间的问题,且尝试xaxis = list(label = NULL)无法移除轴元素。
解决思路与修改方案:
- 完全隐藏轴元素:Plotly中要彻底移除轴的标签、刻度和轴线,需设置轴的
visible = FALSE,同时小提琴图的y轴也需要隐藏,避免留下空白区域。 - 调细图表线条:在小提琴图的配置参数里,通过
line=list(width=1)降低笔触粗细,让图表更精细。 - 清除四周留白:用
margin参数把图表上下左右的边距都设为0,进一步压缩空间。 - 固定图表尺寸:关闭
autosize=TRUE,保持设定的宽高,避免布局自动拉伸导致的空间浪费。
修改后的完整代码:
library(tidyverse) library(reactable) library(plotly) dat <- mtcars |> select(where(is.numeric)) |> pivot_longer(everything()) |> group_by(name) |> summarize(plt = list(value)) my_plot <- function(value, ...) { tibble(value) |> plot_ly( type = "violin", x = ~value, width = 300, height = 50, line = list(width = 1) # 调细小提琴图的轮廓线条 ) |> layout( margin = list(l = 0, r = 0, t = 0, b = 0), # 移除图表四周的留白 xaxis = list(visible = FALSE), # 完全隐藏x轴的所有元素 yaxis = list(visible = FALSE) # 完全隐藏y轴,消除多余空白 ) } dat |> reactable( columns = list( plt = colDef(cell = my_plot, align = "left") # 单元格左对齐,减少额外空隙 ) )
调整后图表会变成紧凑的迷你样式,没有多余的轴元素和留白,线条更精细,能完美适配reactable单元格的显示需求。
内容的提问来源于stack exchange,提问作者Arthur
相关产品推荐
相关产品推荐

