AndroidPlot:如何使网格线的数字倍数?

时间:2014-08-26 01:18:22

标签: android androidplot

我正在使用AndroidPlot 0.61。我想用圆形网格线制作一个图形,与Desmos Calculator(在线)的方式非常相似,但不需要子网格线。我目前正在使用INCREMENT_BY_VALUE和自定义函数来计算最佳网格间距。不幸的是,网格线从原点开始,每条线都是(原点+ n * mod)而不是(n * mod)。如何使网格线成为绝对值的所有倍数?

(这个问题的一个扩展是如何使网格线与图形一起滚动,并在它缩放时改变大小。它在概念上与这个问题How to make domain grid line scroll有关,但我拒绝相信Android上最流行的两个图形框架都明显省略了这样一个基本功能。)

2 个答案:

答案 0 :(得分:0)

我担心我没有完全跟踪你问题的前半部分。网格线是相对于原点计算的,但您可以将原点设置为您想要的任何值。如果你希望你的网格线是绝对值的倍数,并且你是通过INCREMENT_BY_VALUE踩到那么为什么不将你的原点设置为其中一个倍数呢?

关于使网格线滚动的问题的第二部分:如果你手动设置userDomainOrigin而不是允许它'&34;浮动"使用数据然后根据需要调整域边界,您应该获得所需的效果。要记住的是网格是相对于原点绘制的,所以如果让它随着你的边界浮动(默认行为),那么网格似乎是固定的。

为了说明,如果将以下代码添加到DemoApp's SimpleXYPlotActivity中onCreate(...)的末尾,则网格将以0.1的增量从右向左滚动,频率为1hz:

plot.setUserDomainOrigin(0);
new Thread(new Runnable() {
    float offset = 0.1f;
    float window = 6f;
    @Override
    public void run() {
        try {
            while(true) {
                Thread.sleep(1000);                        
                plot.setDomainBoundaries(offset, offset + window, BoundaryMode.FIXED);
                plot.redraw();
                offset+= 0.1f;
            }
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}).start();

答案 1 :(得分:0)

您在不知情的情况下自己找到答案:

  

"网格线从原点开始"

所以只需将原点设置为您喜欢的任何值

setUserDomainOrigin()    and    setUserRangeOrigin()

将根据此用户选择的原点计算和绘制网格。