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