计算YAxis的图表

时间:2013-09-11 13:22:41

标签: java math

假设我有一个包含5个值(a = 155, b = 200, c = 250, d = 300, e 0 345)

的简单折线图

我需要一种方法来计算Y轴上的哪些值,使得值看起来很好。我也希望看到一些小步骤。

如果我使用简单的公式,我会这样做:

MaxValue - Minvalue = difference 
300- 900 = 600

有5个步骤:600/5 = 120 per step

这将导致Y轴的这些值:

Y0 = 200.0 (Rounding off to 200)    
Y1 = 360.0 (Rounding off to 400)    
Y2 = 520.0 (Rounding off to 600)    
Y3 = 680.0 (Rounding off to 700)    
Y4 = 840.0 (Rounding off to 900)    
Y4 = 1000.0 (Rounding off to 1000)

我真正想要的是值:

Y0 = 200    
Y1 = 400    
Y2 = 600    
Y3 = 800    
Y4 = 1000

但我如何计算呢?

在计算之前,我不知道数值的大小,也可能是数千或数十。

1 个答案:

答案 0 :(得分:0)

不完全符合您的期望,但可能会给您一个想法:

const int N = 6;
double vals[N] = {200.0, 360.0, 520.0, 680.0, 840.0, 1000.0};
for (int i = 0; i < N; i++) {
    double factor = pow(10.0, floor(log10(vals[i])));
    double v =  floor(vals[i] / factor + 0.5) * factor;
    std::cout << vals[i] << " " << v << std::endl;
}

P.S。对不起,它是用C ++编写的,但您可以轻松地将其翻译为Java。