Choosing an attractive linear scale for a graph's Y Axis

后端 未结 13 1437
予麋鹿
予麋鹿 2020-12-07 08:42

I\'m writing a bit of code to display a bar (or line) graph in our software. Everything\'s going fine. The thing that\'s got me stumped is labeling the Y axis.

The

相关标签:
13条回答
  • 2020-12-07 09:14

    Sounds like the caller doesn't tell you the ranges it wants.

    So you are free to changed the end points until you get it nicely divisible by your label count.

    Let's define "nice". I would call nice if the labels are off by:

    1. 2^n, for some integer n. eg. ..., .25, .5, 1, 2, 4, 8, 16, ...
    2. 10^n, for some integer n. eg. ..., .01, .1, 1, 10, 100
    3. n/5 == 0, for some positive integer n, eg, 5, 10, 15, 20, 25, ...
    4. n/2 == 0, for some positive integer n, eg, 2, 4, 6, 8, 10, 12, 14, ...
    

    Find the max and min of your data series. Let's call these points:

    min_point and max_point.
    

    Now all you need to do is find is 3 values:

    - start_label, where start_label < min_point and start_label is an integer
    - end_label, where end_label > max_point and end_label is an integer
    - label_offset, where label_offset is "nice"
    

    that fit the equation:

    (end_label - start_label)/label_offset == label_count
    

    There are probably many solutions, so just pick one. Most of the time I bet you can set

    start_label to 0
    

    so just try different integer

    end_label
    

    until the offset is "nice"

    0 讨论(0)
提交回复
热议问题