我有一个动态数据数组,其中包含3个用于构建饼图的整数。在大多数情况下,它可以正常运行IE:[5、10、3]。饼图正确呈现,您会看到所有的碎片。
但是,在某些情况下,数字可能会大不相同。 IE [1,500,250]或[400,1,2]。在这种情况下,您只会看到较大的饼块,而较小的饼块变得如此之小以至于看不到。或点击。
对于这些情况,我需要一些纠正数据数组的方法。我有能力在调整显示值的同时保留真实值,以便显示出来。我正在寻找的是检查是否必要,然后根据其他值进行相对调整。
有什么建议吗?
最佳答案
好吧,首先我要说的是,您不是在“纠正”数据,而是在伪造数据以满足您的要求。
基本上,有一个最小百分比可以单击该比例的一部分,并且您需要将所有片段的大小至少增加到此大小。
当然-在最极端的例子中这是行不通的。如果您拥有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
足够大以应对此问题。当然,切片越细,效果越差。您可能会认为这是重新缩放较大的切片。但是-我建议您找到一种更好的方式与用户进行数据交互,方法是让用户选择打开/关闭切片-或使切片“爆炸”。