好吧,首先我要说的是,您并没有“纠正”数据,而是捏造数据以满足您的要求。
基本上,有一个最小百分比可以点击该比例的一部分,并且您需要将所有部分至少提升到这个大小。
当然——这在最极端的例子中是行不通的。如果您有 1,000,000 个切片,所有切片的值都相同,那么无论您如何缩放它们,其中一些切片(或全部切片)都会太小。
您还需要了解缩放某些非常小的切片将如何丢弃其他较大切片之间的明显比例。
但是 - 一种非常粗暴的做法可能是......
var minPC = 0.5 , // the minimum %age slice visible
total; // total should be set to the sum of the values of all your slices
var minValue = total / 100 * minPC; // The smallest value visible (given the current total)
for (var slice in slices) { //assuming slices is a standard JS 'array'
if ( slices[slice] < minValue ) slices[slice] = minValue;
}
当然,像这样使切片更大会反过来增加总数 - 这意味着小切片仍将小于最小可见百分比。您将需要minPC
足够大以应对此问题。当然,你拥有的非常小的切片越多,这种效果就越差。您可以通过重新缩放更大的切片来解释这一点。
但是-我建议您通过让用户选择开/关切片或让切片“爆炸”来找到一种更好的用户与数据交互的方法。