AChartEngine,X标签未显示

时间:2013-09-19 07:38:30

标签: android achartengine

我编写了一个TimeChart代码,但没有显示X标签,我不知道为什么。这是使用空图形构建View的代码,以及填充它的方法:

GraphicalView graphicalView = null;
TimeSeries series = null;
XYMultipleSeriesDataset dataset = null;
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
public View buildGraph() {
    series = new TimeSeries("");
    dataset = new XYMultipleSeriesDataset();
    dataset.addSeries(series);
    // set properties
    XYSeriesRenderer renderer = new XYSeriesRenderer();
    renderer.setPointStyle(PointStyle.CIRCLE);
    renderer.setLineWidth(2);


    XYMultipleSeriesRenderer multipleRenderer = new XYMultipleSeriesRenderer();
    multipleRenderer.addSeriesRenderer(renderer);
    multipleRenderer.setShowGrid(true);
    multipleRenderer.setPointSize(8);
    multipleRenderer.setClickEnabled(true);
    multipleRenderer.setShowLegend(false);
    multipleRenderer.setShowLabels(true);
    multipleRenderer.setLabelsTextSize(20);
    // create view
    if (graphicalView == null) {
        graphicalView = ChartFactory.getTimeChartView(context, dataset,
                multipleRenderer, "");
        graphicalView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                SeriesSelection seriesSelection = graphicalView
                        .getCurrentSeriesAndPoint();
                if (seriesSelection != null) {
                    Toast.makeText(
                            context,
                            " " + dateFormat.format(seriesSelection.getXValue()) + "  "
                                    + seriesSelection.getValue(),
                            Toast.LENGTH_LONG).show();
                }
            }
        });
    }
    return graphicalView;
}

// refresh graph
@SuppressLint("SimpleDateFormat")
public void refresh(ArrayList<String[]> list) {

    try {
        for (int i = 0; i < list.size(); i++) {
            series.add(dateFormat.parse(list.get(i)[2]),
                    Double.valueOf(list.get(i)[0]));
        }
    } catch (NumberFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    graphicalView.repaint();
}

出了什么问题?

2 个答案:

答案 0 :(得分:0)

有一些逻辑确保显示漂亮的圆形标签。但是,有些情况下您不需要这些标签,最好的例子是时间表。我建议你添加以下电话:

multipleRenderer.setXRoundedLabels(false);

答案 1 :(得分:0)

虽然这个问题在过去很长一段时间,我仍然想回答它。 使用AChartEngine库,我有一些问题: 我想多次查看timeChat视图,并且我不想多次创建和删除GraphicalView。但是当我为TimeSeries设置新数据时,不会显示x标签。 我在TimeChart.java中添加了这段代码:

    public void clear() {
    mStartPoint = null;
   }

然后当我需要referh时,我这样称呼:

    mTimeChart.clear();
    mSeries.add(dates1[i], values[i]);//add new data
    mGraphicalView.repaint();//invalidate