我有一个ecg图表绘制应用程序,图表看起来像这样。
我需要知道的是,是否可以知道绘制点的子网格...比如(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);
}
提前致谢
答案 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)
方法来回转换。