我正在生成条形图。生成所述图表的数据范围很广,这意味着图表的某些区域总是很低,而某些区域超出图表。
将其“标准化”为某个数字(例如 200)的数学原理是什么,所以大的值越大,它们就会缩小,而较小的值会增加?
我正在生成条形图。生成所述图表的数据范围很广,这意味着图表的某些区域总是很低,而某些区域超出图表。
将其“标准化”为某个数字(例如 200)的数学原理是什么,所以大的值越大,它们就会缩小,而较小的值会增加?
如果您正在谈论实际更改数据以用于显示目的,那么有一些基本方法可以使值更接近目标值。最简单的方法是使用该值进行加权平均:A' = (1-α)*A + α*B
其中 alpha 是介于 0 和 1 之间的权重,A 是图表上的数字,B 是目标值。
例如,如果您尝试“标准化”200
并且您的数字分别100 120 200 220 400
插入 A、200 和 0.5 用于 alpha,您会得到150 160 200 210 300
您可以选择不同的 alpha 来调整要将数据拉伸到目标值的程度。0.9 等较高的数字将更多地拉伸数据,而 0.1 等较低的数字将更少地拉伸数据。
我不知道你是否愿意读一点,但我发现 d3.js 框架的缩放教程(http://d3js.org/)是对可视化缩放部分的非常扎实的介绍:
对于从零开始的图表:计算您的值的最大值,然后为每个条显示:
barHeight[i] = (maxBarHeight*value[i])/maxVal;
如果您希望图表基于最小值而不是零,您可能仍希望图表在最小值附近的条形高度具有非零高度。所以计算最小值,并显示:
barHeight[i] = minBarHeight +
(maxBarHeight - minBarHeight ) * (value[i] - minVal) / ( maxVal - minVal );
( Rq :如果 minVal 为零或“接近”零,则设置 minVal = minBarHeigth = 0 并且您有第一种情况)