0

我正在生成条形图。生成所述图表的数据范围很广,这意味着图表的某些区域总是很低,而某些区域超出图表。

将其“标准化”为某个数字(例如 200)的数学原理是什么,所以大的值越大,它们就会缩小,而较小的值会增加?

4

3 回答 3

8

如果您正在谈论实际更改数据以用于显示目的,那么有一些基本方法可以使值更接近目标值。最简单的方法是使用该值进行加权平均: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 等较低的数字将更少地拉伸数据。

于 2013-01-02T02:58:58.070 回答
4

我不知道你是否愿意读一点,但我发现 d3.js 框架的缩放教程(http://d3js.org/)是对可视化缩放部分的非常扎实的介绍:

http://alignedleft.com/tutorials/d3/scales/

于 2012-12-31T08:27:52.983 回答
1

对于从零开始的图表:计算您的值的最大值,然后为每个条显示:

barHeight[i] = (maxBarHeight*value[i])/maxVal;  

如果您希望图表基于最小值而不是零,您可能仍希望图表在最小值附近的条形高度具有非零高度。所以计算最小值,并显示:

 barHeight[i] = minBarHeight + 
         (maxBarHeight - minBarHeight ) * (value[i] - minVal) / ( maxVal - minVal );

( Rq :如果 minVal 为零或“接近”零,则设置 minVal = minBarHeigth = 0 并且您有第一种情况)

于 2013-01-02T03:18:28.910 回答