まず第一に、要件を満たすためにデータをごまかすほど、データを「修正」しているとは言えません。
基本的に、その割合のスライスをクリックできる最小パーセンテージがあり、すべてのピースを少なくともこのサイズにする必要があります。
もちろん、これは最も極端な例では機能しません。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
これに対処するには、十分な大きさにする必要があります。そしてもちろん、スライスが非常に小さいほど、この影響は悪化します。これは、より大きなスライスを再スケーリングすることで説明できます。
ただし、ユーザーがスライスのオン/オフを選択できるようにするか、スライスを「爆発」させることで、ユーザーがデータを操作するより良い方法を見つけることをお勧めします。