我有包含用于建立一个饼图3个整数动态数据数组。 在大多数情况下,它工作正常IE:[5,10,3]。 饼图正确渲染,你会看到所有的作品。
然而,在某些情况下,这些数字可以广泛不同。 IE [1500250]或[400,1,2]。 如果是这样的话,你将只能看到派件的较大和较小的变得这么小,他们都看不出来; 或点击。
我需要纠正这些情况下,数据阵列的一些方法。 我有保留的真正价值,而调整显示值,使片显示的能力。 我所寻找的是一个检查,看看是否有必要再一个相对数的基础上,其他值进行调整。
建议?
我有包含用于建立一个饼图3个整数动态数据数组。 在大多数情况下,它工作正常IE:[5,10,3]。 饼图正确渲染,你会看到所有的作品。
然而,在某些情况下,这些数字可以广泛不同。 IE [1500250]或[400,1,2]。 如果是这样的话,你将只能看到派件的较大和较小的变得这么小,他们都看不出来; 或点击。
我需要纠正这些情况下,数据阵列的一些方法。 我有保留的真正价值,而调整显示值,使片显示的能力。 我所寻找的是一个检查,看看是否有必要再一个相对数的基础上,其他值进行调整。
建议?
那么首先我说你没有那么多“纠正”的数据为捏造数据,以满足您的要求。
基本上,存在对这一比例的分层会点击,你将需要把所有作品到至少这个尺寸的最小百分比。
当然 - 这不能在最极端的例子工作。 如果你有百万片都相同的值那么无论你如何缩放他们,他们中的一些将要过小(或全部)。
你还需要知道如何缩放一定非常小片将会抛出其他较大,切片之间的明显比例。
但是 - 这样做可能是类似的一种非常原始的方式...
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
足够大,以应付这一点。 当然还有更多的非常小片你有恶化这种效果会。 你可以解释这种重新缩放较大的切片。
然而 - 我劝你找到用户,让他们与数据交互的一种更好的方式选择开启/关闭切片 - 或有片“爆炸”。
你似乎要调整大小的馅饼的部分,如果它们太小,使它们可见/点击。
我建议,而不是解决问题这种方式(这样会给无效的数据表示),你也可以使用标签饼图之外的段点是什么? 这些标签可以的话,自己,进行点击。
你的数组中的值的总和表示馅饼的整个“尺寸”。 饼每个值具有的百分比是片的视觉重量。 你可能想设置一个最低门槛,每件的百分比大小(最小阈值将与图表的直径)。
即。 [500,490,10] - > [500/1000,千分之四百九十零,10/1000] - > [50%,49%,1%]
如果有任何值是低于最低门槛,你需要把它提高到最小阈值,并相应地调整你的其他价值,所以他们全部加起来为100%
它与事实,即所有点都和每个值计算为像素有关。