sparklines条形图拟合
sparklines bar graph fit
我正在使用sparklines包http://omnipotent.net/jquery.sparkline/#s-关于
我试图使sparklines条形图适合预先定义的大小,但我有很多图表,理想情况下这应该是动态的。
我正在尝试类似的东西:
$.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})
});
});
parseInt((370-l) / l);
用于说明间距。
问题是,它不合适。尤其是当条形图中有许多这样的条形图时。
它应该使用370px,但在一种情况下使用363px,在另一种情况中使用281。
我试着只做parseInt(370) / l);
,但这留下了大约10像素的悬置。
有什么想法吗?
它永远不会完美匹配,因为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});
剩下的唯一优化是使用barSpacing
参数来减少圆角棒宽度与父宽度的乘积之间的差异。
相关文章:
- 用chart.js绘制条形图
- d3.js用按钮更新条形图工具提示
- 对象拟合:获取结果尺寸
- 添加新数据时D3.JS条形图列偏移量
- Chart.js条形图:网格颜色和隐藏标签
- 在条形图中呈现数据AngularJS,如何制作一个好的多条形图
- Chart.js 2.1.2条形图动画问题
- 如何在Extjs5中更改条形图的标签
- d3.js条形图转换无法正常工作
- 从数组在d3中创建条形图时出现问题
- 条形图元素的HTML5 JavaScript锚点
- d3.js组条形图不起作用
- 图表.js:条形图点击事件
- 如何使用chartjs设置条形图中每个条形图的颜色
- Raphael.js条形图及教程
- 对d3堆叠条形图的数据进行排序
- Javascript FLOT组合条形图;以x轴为字符串的折线图
- 将累积百分比线拟合到排序的直方图输出,使用 d3 获得帕累托图直方图
- sparklines条形图拟合
- 剑道折线图 - 基本单位拟合 - 显示错误值的工具提示