我现在要做一个类似jfreechart的画图工具。要实现类似jfreechart的setAutoRange这个功能。就是通过分析用户输入的点的数据,自动得到坐标系的范围和刻度,这个功能看似简单其实很复杂。因为用户输入的数据是随机的,所以还要考虑到小数的问题。我分析了jfreechart的代码,但是水平有限看不太懂。在这里想问问大家这个功能应该如何实现?大家给我提供一个思路。这里有两个必须解决的难题:
1.无论用户输入的点数据如何,自动生成的坐标范围和刻度必须越规整越好。
2. 生成的坐标系中刻度的大小要和实际显示到界面时候的大小相联系,使得无论何时,坐标系的网格大小都能一致。
1.无论用户输入的点数据如何,自动生成的坐标范围和刻度必须越规整越好。
2. 生成的坐标系中刻度的大小要和实际显示到界面时候的大小相联系,使得无论何时,坐标系的网格大小都能一致。
观察数据的最大值和最小值范围,初步定一个边界,随着数据的增多逐步修改,取所有数据的上下限,100以内的范围就自动分为100份,平均分,100以上可以分为1000份。
2. 生成的坐标系中刻度的大小要和实际显示到界面时候的大小相联系,使得无论何时,坐标系的网格大小都能一致。
试试视图转换功能,以不同的视图得到不同机构 vc貌似有类似坐标转化的函数,java应该也用只是随便说说自己的想法
1.扫描整个值序列,找出最小和最大值
2.确定一个Y轴的最大分块个数,大于这个数显示起来会很难看,我当时定的是10
3.用最小和最大值之差依次去除
0.0000001,.0000002,.0000005
,0.000001,0.000002,0.000005
,0.00001,0.00002,0.00005,
......
1,2,5
....
1000,2000,5000
...
知道遇到一个至使相除结果<=最大分块个数的那个
这个值就是了