1

这是我的问题。我有潜在的大量数字,从一百到一亿甚至更多。我想将这些数字提供给图表绘图仪(如果您好奇,请访问http://benpickles.github.com/peity/ )。问题是,当您有非常大的数字时,折线图最终看起来像一条平坦的线,因为数字太大,差异不会出现在如此小的图表上。但是,如果您绘制像 2、5、8、10、15 这样的数字。您可以很容易地看到图表线急剧上升并向右移动。

因此,为了以一种真正有意义的方式绘制我的迷你图表,我需要将这些大数字减少为尽可能小的数字,但要保持足够大的数字之间的相对差异,以便它们可以很好地绘制在图表上,就像小图表。我真的不需要一个完美的公式(不确定是否存在)。如果我的“大”数字在增长,我只需要与大数字以相同的相对速度增长的个位数数字。如果它们是平坦的,我希望图表看起来平坦,等等。

我没有很强的数学背景,所以我不知道是否有一个实际的数学术语?

4

4 回答 4

1

根据我对您问题的理解,您的问题是您绘制的数字具有非常不同的比例。如果是这种情况,您可以考虑以对数/对数比例绘制它们: http: //en.m.wikipedia.org/wiki/Logarithmic_scale

于 2012-07-08T05:46:09.560 回答
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 回答
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 回答