问题描述
产品中使用到了VTable的迷你图,但是数据生成迷你图的效果用户觉得相邻折线间的距离太近了,请问怎么调整这个间距?
解决方案
首先需要明确一个单元格的宽高是包括了两部分,padding内边距和内容。其中padding在VTable中默认是[10, 16, 10, 16],VTable的行高默认是40px,上下内边距占了20px,内容高度剩20px。
上下内边距占了20px,相邻两个迷你折线图的最短间距也就是20px。也就是说相邻两个迷你折线图的最短间距是由padding决定的。那在官网示例中将padding调整为20,调整后发现线条曲线成直线了,这是因为40的行高都被边距占掉了,折线图没有了伸展空间。
那么此时需要相应的加大行高才行,设置defaultRowHeight为60的效果如下:
代码示例
const records = [ { 'lineData':[50,20,20,40,60,50,70],
'lineData2':[{x:1,y:1500},{x:2,y:1480},{x:3,y:1520},{x:4,y:1550},{x:5,y:1600}],
},
{
'lineData':[50,20,60,40,60,50,70],
'lineData2':[{x:1,y:1500},{x:2,y:1480},{x:3,y:1520},{x:4,y:1550},{x:5,y:1600}],
},
{
'lineData':[50,50,20,40,10,50,70],
'lineData2':[{x:1,y:1500},{x:2,y:1480},{x:3,y:1520},{x:4,y:1550},{x:5,y:1600}],
},
{
'lineData':[70,20,20,40,60,50,70],
'lineData2':[{x:1,y:1500},{x:2,y:1480},{x:3,y:1520},{x:4,y:1550},{x:5,y:1600}],
}
];
const columns = [ { field: 'lineData', title: 'sparkline', cellType: 'sparkline', width:300, style:{ padding:20 }, sparklineSpec: { type: 'line', pointShowRule: 'none', smooth: true, line: { style: { stroke: '#2E62F1', strokeWidth: 2, }, }, point: { hover: { stroke: 'blue', strokeWidth: 1, fill: 'red', shape: 'circle', size: 4, }, style: { stroke: 'red', strokeWidth: 1, fill: 'yellow', shape: 'circle', size: 2, }, }, crosshair: { style: { stroke: 'gray', strokeWidth: 1, }, }, }, }, { field: 'lineData2', title: 'sparkline 2', cellType: 'sparkline', width:300, style:{ padding:20 }, sparklineSpec: { type: 'line', xField: 'x', yField: 'y', pointShowRule: 'all', smooth: true, line: { style: { stroke: '#2E62F1', strokeWidth: 2, }, }, }, },];
const option = {
records,
columns,
defaultRowHeight:60
};
const tableInstance = new VTable.ListTable(document.getElementById(CONTAINER_ID), option);
结果展示
直接将示例代码中代码粘贴到官网编辑器中即可呈现。
相关文档
迷你图用法教程:visactor.io/vtable/guid…
style用法教程:visactor.io/vtable/guid…
相关api:visactor.io/vtable/opti…
github:github.com/VisActor/VT…