1

円グラフの作成に使用される 3 つの int を含む動的データ配列があります。ほとんどの場合、問題なく動作する IE: [5, 10, 3]。円グラフが正しくレンダリングされ、すべての部分が表示されます。

ただし、場合によっては、数値が大きく異なる場合があります。IE [1,500,250] または [400,1,2]。この場合、大きい方のパイ片だけが表示され、小さい方のパイ片は非常に小さくなり、見えなくなります。またはクリックしました。

これらのケースでは、データ配列を修正する何らかの方法が必要です。ピースが表示されるように表示値を調整しながら、真の値を保持する機能があります。私が探しているのは、必要かどうかを確認するチェックと、他の値に基づいて調整するための相対数です。

提案?

4

4 に答える 4

3

パイのセグメントが小さすぎて表示/クリック可能にできない場合は、パイのセグメントのサイズを変更したいようです。

この方法で問題を解決する代わりに (データの無効な表現を与える)、代わりに円グラフの外側にあるラベルを使用してセグメントを指すことをお勧めしますか? これらのラベル自体をクリック可能にすることができます。

于 2013-06-04T15:13:07.610 に答える
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これに対処するには、十分な大きさにする必要があります。そしてもちろん、スライスが非常に小さいほど、この影響は悪化します。これは、より大きなスライスを再スケーリングすることで説明できます。

ただし、ユーザーがスライスのオン/オフを選択できるようにするか、スライスを「爆発」させることで、ユーザーがデータを操作するより良い方法を見つけることをお勧めします。

于 2013-06-04T15:14:51.920 に答える
0

これは、すべてのポイントが合計され、各値がピクセルに計算されることに関連しています。

于 2013-06-04T15:10:52.607 に答える