在AndroidPlot中标识绘制点的网格

时间:2016-12-26 08:04:00

标签: android androidplot

我有一个ecg图表绘制应用程序,图表看起来像这样。

enter image description here

我需要知道的是,是否可以知道绘制点的子网格...比如(row_index,column_index)或类似的格式。其实我不知道这是不是一种可能的情况。所以,如果没有办法,请告诉我。 以下是我的图表配置方法。

  private void configureGraph() {
/**
     * ecgPlot corresponds to XYPlot
     */
    XYGraphWidget graph = ecgPlot.getGraph();

    /**
     * Paint to denote line color
     */
    Paint paint = new Paint();
    paint.setColor(Color.WHITE);
    paint.setStrokeWidth(3.0f);
    /**
     * Setting graph x and y boundary values
     */
    ecgPlot.setRangeBoundaries(-40, 40, BoundaryMode.FIXED);
    ecgPlot.setDomainBoundaries(0, 1500, BoundaryMode.FIXED);

    ecgPlot.setPlotPadding(-10, 0, 0, 0);

    /**
     * Removes default bkg - ie; black
     */
    ecgPlot.setBackgroundPaint(null);
    graph.setBackgroundPaint(null);
    graph.setGridBackgroundPaint(null);
    /**
     * Adjusting grid line width
     */
    graph.getDomainGridLinePaint().setStrokeWidth(4.0f);
    graph.getRangeGridLinePaint().setStrokeWidth(4.0f);
    graph.getDomainSubGridLinePaint().setStrokeWidth(1.0f);
    graph.getRangeSubGridLinePaint().setStrokeWidth(1.0f);

    /**
     * Removes border
     */
    ecgPlot.setBorderPaint(null);
    /**
     * Setting grid color
     */
    graph.getDomainGridLinePaint().setColor(getResources().getColor(R.color.colorECGGrid));
    graph.getRangeGridLinePaint().setColor(getResources().getColor(R.color.colorECGGrid));
    graph.getRangeSubGridLinePaint().setColor(getResources().getColor(R.color.colorECGGrid));
    graph.getDomainSubGridLinePaint().setColor(getResources().getColor(R.color.colorECGGrid));
    /**
     * Setting number of sub grid lines per grid
     */
    graph.setLinesPerDomainLabel(5);
    graph.setLinesPerRangeLabel(5);

    ecgPlot.setRangeStep(StepMode.INCREMENT_BY_VAL, 1);
    ecgPlot.setDomainStepValue(75);
    ecgPlot.setLinesPerDomainLabel(5);
    ecgPlot.setDomainLabel(null);
    ecgPlot.setRangeLabel(null);

    Paint paintTest = new Paint();
    paintTest.setColor(Color.TRANSPARENT);
    paintTest.setStrokeWidth(3.0f);

    ecgLinePointFormatter.setLegendIconEnabled(false);
    // PointLabelFormatter pointLabelFormatter = new PointLabelFormatter();
    // pointLabelFormatter.setTextPaint(paint);

}                                                                                                            

提前致谢

1 个答案:

答案 0 :(得分:0)

不幸的是,我不在一个可以测试此代码是否有效的地方,但是这里有一个关于如何将真实XY值转换为子网格坐标的一般概念:

size

然后,给定要转换为子网格坐标的数字x和数字y:

double subX(Number x) {
    // calculate the value each subgrid represents:
    double stepVal = (plot.getBounds().getWidth().doubleValue() / 75) * 5;

    // find the value of x relative to the left edge of the screen
    double xOff = x.doubleValue() - plot.getBounds().getMinX().doubleValue();     
    return xOff / stepVal;
}

double subY(Number y) {
    double stepVal = plot.getBounds().getHeight().doubleValue() / 5;

    double yOff = y.doubleValue() - plot.getBounds().getMinY().doubleValue();
    return yOff / stepVal;
}

如果您需要像素值而不是实际值,则可以使用Number x = subX(realX); Number y = subY(realY); XYPlot.seriesToScreenX/Y(Number)方法来回转换。