1

これが私の問題です。1 億から 1 億、またはそれ以上の大きな数になる可能性があります。これらの数値をチャート プロッターにフィードしたいと思います (興味がある場合はhttp://benpickles.github.com/peity/ )。問題は、数値が非常に大きい場合、折れ線グラフが平らな線のように見えることです。これは、数値が非常に大きいため、そのような小さなグラフには違いが現れないためです。しかし、2、5、8、10、15 のような数字をグラフにすると、チャートの線が右に急上昇しているのを簡単に確認できます。

したがって、ミニチャートを実際に意味のある方法でプロットするには、これらの大きな数をできるだけ小さな数に減らす必要がありますが、チャートにプロットするのに十分な大きさの数値間の相対的な差を維持する必要があります。ペイティチャート。完璧な数式は本当に必要ありません (存在するかどうかはわかりません)。私の「大きな」数字が成長している場合、大きな数字と同じ相対的なペースで成長する 1 桁の数字が必要です。それらがいくらかフラットである場合、チャートをフラットに見せたいなど.

私は強い数学のバックグラウンドを持っていないので、これに実際の数学用語があるかどうかわかりません??

4

4 に答える 4

1

関数 Math.Log(...) を見てください。あなたはそれを知っていると思いますが、念のためにhttp://en.wikipedia.org/wiki/Logarithm . 対数は基本的にグラフを平らにします。

プロットする前に、すべてのポイントに対してそれを行います。実験によって(十分に見える場合)対数の底を選択できます。あなたの説明から、10 のような大きな数を使用する必要があると思います。

newPlotValue = Math.Log(plotValue, 10); // or Math.Log10(plotValue);
于 2012-07-08T05:55:09.277 に答える
1

あなたの質問で私が理解していることから、あなたの問題は、プロットしている数値のスケールが非常に異なることです。その場合は、対数/対数スケールでプロットすることを検討してください: http://en.m.wikipedia.org/wiki/Logarithmic_scale

于 2012-07-08T05:46:09.560 に答える
0

プロット スケールがどこにあるかを決定するだけで済みます。

最小のものをスケールの開始点として使用できます。

次は共通因子を決めて、それを単元で示します。

数値が 1000 より大きい場合と同様に、それらをすべて 1000 で割り、ラベルにスケールを (1000 で) 表示します。同じものを数百万または数十億で使用できます。

于 2012-07-08T05:43:21.523 に答える
0

次の気圧があるとします。

double[] p = { 101325.0, 101380.0, 101510.0, 101580.0, 101470.0, 101295.0, 100985.0, };

(パスカルの数字)。それらをプロットすると、数値はすべてほぼ同じ大きさであるため、グラフは非常にまっすぐで水平に見える場合があります。

変化をよりよく確認するには、すべての用語から特定の数を差し引くだけです。例えば

double offset = 100000.0;
var pOffset = p.Select(x => x - offset).ToArray();

次に、代わりにプロットpOffsetします。

100000.0上記の例では、 「魔法のように」オフセットを選択しました。ただし、すべての値の最小値をオフセットとして使用できます。つまり、

double offset = p.Min();

私のコード例では、が必要ですusing System.Linq;

于 2012-07-08T06:36:59.300 に答える