在android中如何在aChartEngine的折线图中正确格式化XAxis值

在android中如何在aChartEngine的折线图中正确格式化XAxis值,android,achartengine,linechart,Android,Achartengine,Linechart,我怎样才能正确地使用achartEngine格式制作XAxis?我希望它只有日期值正确地间隔在X轴与日期值,但我似乎无法让它正常工作 这就是我尝试过的: XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); dataset.addSeries(series); XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();

我怎样才能正确地使用achartEngine格式制作XAxis?我希望它只有日期值正确地间隔在X轴与日期值,但我似乎无法让它正常工作

这就是我尝试过的:

 XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
     dataset.addSeries(series);

     XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
     mRenderer.setBackgroundColor(Color.BLACK);
     mRenderer.setApplyBackgroundColor(true);
     mRenderer.setGridColor(Color.LTGRAY);
     mRenderer.setXLabels(0);
    // mRenderer.setMargins(new int[]{0, 20, 0, 0});

     XYSeriesRenderer renderer = new XYSeriesRenderer();
     //renderer.setDisplayChartValuesDistance(1);
     renderer.setColor(Color.GREEN);

     mRenderer.setXLabels(10);
        if(date_value.length < 10){ //date_value is a large array of dates for the X-Axis

            for(int i = 0; i < date_value.length; i++){
                mRenderer.addXTextLabel(i+1, date_value[i]);    
            }

        }

        else if(date_value.length > 10){

            int mod = date_value.length  %  10;
            int add_mod = mod;
            int last = date_value.length;

            mRenderer.addXTextLabel(0, date_value[0]);

            for(int i=0; i < 10; i++){
                mRenderer.addXTextLabel(i, date_value[mod]);

                     mod+=add_mod; 


            }
            mRenderer.setXLabelsAngle(90);
            //mRenderer.addXTextLabel(date_value.length, date_value[last]);

        }
    /*get the last elements in the array and parse as double to set the maximum range for X*/
        Calendar ist = Calendar.getInstance();
        Calendar last = Calendar.getInstance();
        ist.setTime(formatter.stringToDateReport(date_value[0]));
        last.setTime(formatter.stringToDateReport(date_value[date_value.length-1]));

    mRenderer.setXAxisMin(ist.get(Calendar.DATE));
     mRenderer.setXAxisMax(last.get(Calendar.DATE));
     mRenderer.addSeriesRenderer(renderer); 
     chartView = ChartFactory.getLineChartView(context, dataset, mRenderer);

return chartView;
xymultiplesseriesdataset数据集=新的xymultiplesseriesdataset();
dataset.addSeries(系列);
XYmultiplesseriesrender mrender=新的XYmultiplesseriesrender();
mRenderer.setBackgroundColor(颜色:黑色);
mrender.setApplyBackgroundColor(真);
mrender.setGridColor(Color.LTGRAY);
mrender.setXLabels(0);
//setMargins(新的int[]{0,20,0,0});
XYSeriesRenderer渲染器=新的XYSeriesRenderer();
//setDisplayChartValuesDistance(1);
渲染器.setColor(Color.GREEN);
mrender.setXLabels(10);
如果(date_value.length<10){//date_值是X轴的一个大日期数组
对于(int i=0;i10){
int mod=日期值。长度%10;
int add_mod=mod;
int last=日期\值.length;
mrender.addxtlabel(0,日期值[0]);
对于(int i=0;i<10;i++){
mrender.addxtlabel(i,日期值[mod]);
mod+=添加_mod;
}
mrender.setXLabelsAngle(90);
//mrender.addxtlabel(date_value.length,date_value[last]);
}
/*获取数组中的最后一个元素,并将其解析为double以设置X的最大范围*/
Calendar ist=Calendar.getInstance();
Calendar last=Calendar.getInstance();
列表设置时间(格式化程序StringToDaterReport(日期值[0]);
last.setTime(formatter.StringToDaterReport(date_值[date_值.length-1]);
mrender.setXAxisMin(ist.get(Calendar.DATE));
mrender.setXAxisMax(last.get(Calendar.DATE));
mrender.addseriesrender(渲染器);
chartView=ChartFactory.getLineChartView(上下文、数据集、mrender);
返回图表视图;
这就是我得到的:


如您所见,它们的间距不正确,它们位于x轴线上,并且具有不需要的值,例如10、15、20。。我怎样才能纠正这个问题?谢谢。

以下代码是以记录(PCM 16位)数据的正负值显示记录图表

public void onDraw(画布)
{       
油漆。设置颜色(颜色。白色);
画布.画线(宽度/16+(宽度/8)+(宽度/100)-1,0,宽度/16+(宽度/8)+(宽度/100)-1,高度,油漆);
帆布。抽绳(0,高度/2,宽度,高度/2,油漆);
画布。drawText(“32767”(宽/20),高/30,油漆);
画布.绘图文本(“0”,(宽度/12),(高度/2)+(高度/80)-(高度/2)/2,绘制);
画布.绘图文本(“-32767”,宽/25),高/2-高/50,油漆);
画布。drawText(“32767”(宽/20),高/2+高/50,油漆);
画布.绘图文本(“0”,(宽度/12),(高度/2)+(高度/80)+(高度/2)/2,绘制);
画布.绘图文本(“-32767”,宽/25),高/30,油漆);
油漆。设置颜色(颜色。绿色);
对于(i=0;i=1)
{  
画布.画线(宽度/16+秒.最终宽度-1+(宽度/8)+(宽度/100),(浮动)(高度/2-(高度/4)-(高度/2*(秒.音频数据[i-1]-1200)/second.graph\y)),宽度/16+秒.最终宽度+(宽度/8)+(宽度/100),(浮动)(高度/2-(高度/4)-(高度/2*(秒.音频数据[i]-1200)/second.graph\y)),绘画);
canvas.drawine(width/16+second.final_width-1+(width/8)+(width/100),(float)(height/2+(height/4)-(height/2*(second.fftArray[i-1].re()/second.graphz)),width/16+second.final_width+(width/8)+(width/100),(float)(height/2+(height/4)-(height/2*(second.fftArray[i].re())/second.graph_z)),paint);
//画布。绘制线(宽度/16+秒。最终宽度+(宽度/8)+(宽度/100),高度/2-(高度/4),宽度/16+秒。最终宽度+(宽度/8)+(宽度/100),(浮动)(高度/2-(高度/4)-(高度/2*(秒。音频数据[i]-1200)/秒。图形(y)),绘制);
//canvas.drawine(width/16+second.final_width+(width/8)+(width/100),height/2+(height/4),width/16+second.final_width+(width/8)+(width/100),(float)(height/2+(height/4)-(height/2*(second.fftArray[i].re())/second.graph_z)),paint);
}
秒。最终宽度=秒。最终宽度+1;
}
第二,最终宽度=0;
}

乍一看,您应该删除该行

mRenderer.setXLabels(10);
正如您想
setXLabels(0)
一样,就像在另一行中一样。我认为代码告诉AChartEngine尝试打印10个标签以及文本标签


编辑:您还需要调用
addxtlabel()
,参数为您希望标签位于的x位置。所以
renderer.addxtlabel(应该有一个字符串的日期值,一个字符串的日期值)

这不是aChartEngine或者是吗?你必须尝试canvas.drawText(“32767”,宽度/20),高度/30,绘画);动态?这有助于删除不需要的值,但日期仍然聚集在一起。我似乎无法把它们隔开。无论如何谢谢你
mRenderer.setXLabels(10);