1

我正在尝试检索(AchartEngine)TimeChart 的系列点的屏幕坐标,但 toScreenPoint 方法总是返回 NullPointerException。

这是代码:

TimeChart chart = new TimeChart(dataSet, renderer);
XYSeries serie = dataSet.getSeriesAt(0);

for(int u=0;u<serie.getItemCount();u++)
{
    double dy = serie.getY(u);
    double dx = serie.getX(u);

    double[] pos = chart.toScreenPoint(new double[]{dx,dy}, 0);
}

实例化 TimeChart 时有什么我应该初始化的吗?

4

1 回答 1

0

这是时间图的代码。您需要使用自己的代码编辑 fillData。

private void chartView() {

        layout = (RelativeLayout) findViewById(R.id.graph);

        // create dataset and renderer
        mDataset = new XYMultipleSeriesDataset();
        mRenderer = new XYMultipleSeriesRenderer();
        mRenderer.setAxisTitleTextSize(16);
        mRenderer.setChartTitleTextSize(20);
        mRenderer.setLabelsTextSize(15);
        mRenderer.setLegendTextSize(15);
        mRenderer.setPointSize(3f);

        XYSeriesRenderer r = new XYSeriesRenderer();
        r.setColor(Color.CYAN);
        r.setPointStyle(PointStyle.DIAMOND);
        r.setFillPoints(true);
        mRenderer.addSeriesRenderer(r);
        mRenderer.setClickEnabled(true);
        mRenderer.setSelectableBuffer(20);
        mRenderer.setPanEnabled(true);

        time_series = new TimeSeries("Weight");

        mDataset.addSeries(time_series);

        fillData();

        mChartView = ChartFactory.getTimeChartView(this, mDataset, mRenderer,
                "H:mm:ss");

        layout.addView(mChartView);
    }

private void fillData() {
    long value = new Date().getTime() - 3 * TimeChart.DAY;
    for (int i = 0; i < 100; i++) {
        time_series.add(new Date(value + i * TimeChart.DAY / 4), i);
    }
}

希望这对你有帮助!

于 2012-03-26T10:00:44.683 回答