Jam*_*s R 3 javascript jquery sparklines
我正在使用sparklines包http://omnipotent.net/jquery.sparkline/#s-about
我试图让迷你图条形图适合预定尺寸,但我有很多图表,理想情况下这应该是动态的.
我正在尝试这样的事情:
$.each(sparklines, function(index, sparkline) {
var sparkline = $(sparkline);
var data_out = sparkline.attr('data');
$.getJSON('/search/histogram/?histo_field=' + data_out, function (data) {
var width = sparkline.width();
var data_obj = data.data;
var l = data_obj.length;
var pixel_width = parseInt((370-l) / l);
sparkline.sparkline(data_obj, {type: 'bar', "barWidth":pixel_width,"height":50})
});
});
Run Code Online (Sandbox Code Playgroud)
这parseInt((370-l) / l);是考虑间距.
问题是,它不合适.特别是当条形图中有许多这样的条形图时.
它应该使用370px,但在一种情况下它使用363px而在另一种情况下它使用281.
我尝试过这样做parseInt(370) / l);但是留下了大约十个px的悬垂.
有什么想法吗?
它永远不会完美地适合,count * (width + spacing)因为它们可能永远不会完全填充宽度,因为它们被舍入为整数值.
我现在使用的最佳近似值就是这样.(还有一些额外的代码可以从数据属性中读取设置.)
var $el = $(el);
var values = $el.data('values').split(',').map(parseFloat);
var type = $el.data('type') || 'line' ;
var height = $el.data('height') || 'auto';
var parentWidth = $el.parent().width();
var valueCount = values.length;
var barSpacing = 1;
var barWidth = Math.round((parentWidth - ( valueCount - 1 ) * barSpacing ) / valueCount);
$el.sparkline(values, {width:'100%', type: type, height: height, barWidth: barWidth, barSpacing: barSpacing});
Run Code Online (Sandbox Code Playgroud)
剩下的唯一优化是使用barSpacing参数来减少圆角barWidth的乘积与父宽度之间的差异.
| 归档时间: |
|
| 查看次数: |
4474 次 |
| 最近记录: |