简体   繁体   English

如何在AChartEngine中为CombinedXYChart设置X轴的日期格式

[英]How to set Date Format for X -Axis for CombinedXYChart in AChartEngine

i want to create a CombinedXYChartIntent, but i need the date format in the x Axis. 我想创建一个CombinedXYChartIntent,但我需要x轴中的日期格式。 I know how to make a simple TimeChartIntent. 我知道如何制作一个简单的TimeChartIntent。

  Intent intent = ChartFactory.getTimeChartIntent(context, dataset, mRenderer, "HH:mm");

but I can't do the same in the case of ComninedXYChart 但是在ComninedXYChart的情况下我不能做同样的事情

I have read the following entry, but the way he has resolved it, does not work. 我已经阅读了以下条目,但是他解决它的方式不起作用。 There is no method setXLabelFormat() in the class XYMultipleSeriesRenderer. XYMultipleSeriesRenderer类中没有方法setXLabelFormat()。

How to set the Date Format for CombinedXYChart in AChartEngine? 如何在AChartEngine中设置CombinedXYChart的日期格式?

I have basically exactly the same problem, maybe someone has found a way to set Date Format for X -Axis for CombinedXYChart. 我有完全相同的问题,也许有人找到了一种方法来为CombinedXYChart的X轴设置日期格式。

I have already found myself a solution, and would like to introduce to you my solution approach. 我已经找到了解决方案,并想向您介绍我的解决方法。

public class LineGraph extends AbstractDemoChart {
      private static final long HOUR = 3600 * 1000;
      private static final long DAY = HOUR * 24;
      private static final int HOURS = 24;

    public Intent getIntent(Context context,double[] personCount, Date[] timeValue) {

        //Create XYSeries, fill it with 24 int Values for X-Axis and PersonCount for Y-Axis
        XYSeries series = new XYSeries("Test");
        for (int i = 0; i < timeValue.length; i++) {
            series.add(i, personCount[i]);
        }
        // Creating a dataset to hold each series
        XYMultipleSeriesDataset dataset =new XYMultipleSeriesDataset(); 
        dataset.addSeries(series);

        // Now I create the Series renderer
        XYSeriesRenderer renderer =new XYSeriesRenderer();
        renderer.setColor(Color.WHITE);

        /*last step, Creating the renderer that controls the full charts and add the   single renderer for each series */
        XYMultipleSeriesRenderer mRenderer =new XYMultipleSeriesRenderer();

        mRenderer.addSeriesRenderer(renderer);

        renderer.setPointStyle(PointStyle.SQUARE);
        renderer.setFillPoints(true);

        // Use DateFormatter for having X Labels in the form of HH:mm
        SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
        for (int i = 0; i < timeValue.length; i++) {
            // add custom Labels with correct format
            if(i%2==0){
                mRenderer.addXTextLabel(i, formatter.format(timeValue[i]));     
            }
        }
        mRenderer.setYLabels(10);
        mRenderer.setShowGrid(true);
        mRenderer.setXLabelsAlign(Align.CENTER);
        mRenderer.setYLabelsAlign(Align.RIGHT);
        // disable the default labels
        mRenderer.setXLabels(0);
        mRenderer.setShowCustomTextGrid(true);
        mRenderer.setZoomButtonsVisible(true);
        mRenderer.setPanLimits(new double[] { -10, 20, -10, 40 });
        mRenderer.setZoomLimits(new double[] { -10, 20, -10, 40 });
        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(Color.BLACK);
        mRenderer.setChartTitle("Persons");


        Intent intent = ChartFactory.getCombinedXYChartIntent(context, dataset, mRenderer,  new String[]{BarChart.TYPE},
                    "Weather parameters");
        return intent;
    }



after doing this, my X-Axis has time Values in form of HH:mm 完成此操作后,我的X轴具有HH:mm形式的时间值

I hope this helps you further 希望这对您有帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM