我有2个Achartengine XYSeries问题

时间:2014-04-03 15:46:36

标签: eclipse windows-8 achartengine

我遇到了一个简单的XYSeries线图的问题。

  1. 当最后绘制的点与下一个绘制点之间的差值的绝对值小于11时,下一个绘制点上的标签将丢失。我想要显示所有标签。

  2. 我有一些(不是全部)缺少垂直网格线,不明白为什么。我希望每个XY坐标都有一条垂直网格线。

  3. 感谢您的帮助。这是代码。

     String glucoseLegendText = getString(R.string.glucose_legend_text);
            XYSeries series = new XYSeries(glucoseLegendText);
    
            datasource = new HistoryDataSource(this);
            datasource.open();
            Cursor c = datasource.getQuery();
            c.moveToFirst();
            int cnt = c.getCount();
            int minValue = 0;
            int maxValue = 0;
    
            for (int i = 0; i < cnt; i++) {
                int glucoseValue = c.getInt(2);
                series.add(i, glucoseValue);
                if (i == 0 || glucoseValue < minValue)
                    minValue = glucoseValue;
                if (glucoseValue > maxValue)
                    maxValue = glucoseValue;
                c.moveToNext();
            }
            datasource.close();
    
            XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
            dataset.addSeries(series);
    
            XYSeriesRenderer renderer = new XYSeriesRenderer();
            renderer.setColor(Color.BLUE);
            renderer.setPointStyle(PointStyle.CIRCLE);
            renderer.setFillPoints(true);
            renderer.setLineWidth(3);
            renderer.setDisplayChartValues(true);
            renderer.setChartValuesTextSize(15);
            renderer.setChartValuesTextAlign(Align.LEFT);
    
    XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
            mRenderer.addSeriesRenderer(renderer);
            mRenderer.setShowGrid(true);
            mRenderer.setGridColor(Color.BLACK);
            mRenderer.setXLabels(cnt); // to control number of grid lines
            mRenderer.setYLabels(cnt); // to control number of grid lines
            mRenderer.setXLabelsColor(Color.YELLOW);
            mRenderer.setPointSize(5);
            mRenderer.setYLabelsAlign(Align.RIGHT);
            mRenderer.setLegendTextSize(15);
            mRenderer.setZoomButtonsVisible(true);
            mRenderer.setYAxisMin(minValue - 2);  // buffer bottom
            mRenderer.setYAxisMax(maxValue + 3);  // buffer top
    
            // Populate the X labels with the dates and times
            c.moveToFirst();
            for (int d = 0; d < cnt; d++) {
                timeStamp = c.getString(1);
                date = timeStamp.substring(0, 5);
                time = timeStamp.substring(9, 14);
                if (date.equals(dateLast)) {
                    mRenderer.addXTextLabel(d, "\n" + time);
                } else
                    mRenderer.addXTextLabel(d, "\n" + time + "\n" + date);
    
                dateLast = date;
                c.moveToNext();
            }
    
            c.close();
    
            GraphicalView gview = ChartFactory.getTimeChartView(this, dataset,
                    mRenderer, "");
    
            LinearLayout layout = (LinearLayout) findViewById(R.id.Chart);
            layout.addView(gview);
    

1 个答案:

答案 0 :(得分:0)

对于第一个问题,您可以使用

控制标签显示
renderer.setXLabels(approximateNumberOfLabels);

对于第二个问题,网格线沿着标签显示。