我有一个动态数据数组,其中包含3个用于构建饼图的整数。在大多数情况下,IE工作正常:[5,10,3]。饼图正确呈现,您可以看到所有碎片。
然而,在某些情况下,数字可能会大不相同。 IE [1,500,250]或[400,1,2]。在这种情况下,您只会看到较大的饼块,而较小的饼块变得如此之小,以至于无法看到;或点击。
我需要一些方法来纠正这些情况的数据数组。我有能力在调整显示值的同时保留真值,以便显示碎片。我正在寻找的是检查是否有必要,然后根据其他值调整相对数字。
建议?
答案 0 :(得分:3)
首先,我要说的是,你没有那么“纠正”数据,而是捏造数据以满足你的要求。
基本上,有一个最小百分比,其中一部分可以点击,你需要将所有部分至少达到这个尺寸。
当然 - 这在最极端的例子中无法奏效。如果你有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
足够大以应对此问题。当然,你所使用的切片越小,效果就越差。你可以解释这是重新缩放更大的切片。
然而 - 我建议你找一个更好的用户与数据交互的方法,让他们选择开/关切片 - 或让切片“爆炸”。
答案 1 :(得分:2)
如果它们太小而无法使它们可见/可点击,您似乎想调整饼图的片段大小。
我可以建议不要以这种方式解决问题(这会导致无效 数据的表示),您可以使用饼图外的标签来指向细分市场吗?这些标签本身可以点击。
答案 2 :(得分:1)
数组中值的总和表示饼图的整个“大小”。每个值的百分比具有该部分的视觉权重。您可能希望为每个部分的百分比大小设置最小阈值(最小阈值将与图表的直径相关)。
即。 [500,490,10] - &gt; [500 / 1000,490 / 1000,10 / 1000] - &gt; [50%,49%,1%]
如果任何值小于最低阈值,则需要将其增加到最小阈值并相应调整其他值,以便它们总计达到100%
答案 3 :(得分:0)
事实上,所有点都是和,每个值都是按像素计算的。