Android 饼图显示非空值

Android 饼图显示非空值,android,pie-chart,achartengine,Android,Pie Chart,Achartengine,我正在使用AChartEngine库制作饼图。在这里,我想禁用图表值以显示在图表上,但仅限于内容值为0的图表。如果有人知道这一点,请与我共享 编码: BuildCategory渲染器: 此处的数据集: protected CategorySeries buildCategoryDataset(String title, double[] values) { CategorySeries series = new CategorySeries(title); int k = 0,year; St

我正在使用AChartEngine库制作饼图。在这里,我想禁用图表值以显示在图表上,但仅限于内容值为0的图表。如果有人知道这一点,请与我共享

编码: BuildCategory渲染器: 此处的数据集:

 protected CategorySeries buildCategoryDataset(String title, double[] values) {
CategorySeries series = new CategorySeries(title);
int k = 0,year;
String str_year;
str_year=String.valueOf(Math.round(values[0]));
Log.i("Invent","Year"+str_year);

year=Integer.parseInt(str_year);
Log.i("Invent","YearInt"+year);
    if(flag_val==1)
    {
        for(k=0;k<tot_yearno-1;k++)
        {
            if(values[k]==0)
        {  
        series.add(0.0);     /// Here some settings for display null value.But **here i Want to display nothing Only.** 
        }
            else
            series.add("" + year_first++, values[k]);   
        }
    }
    if(flag_val==0)
    {
    for (double value : values) {    

        if(value==0)
        {
        series.add("" + ++k, 0.0);
        }
        else
  series.add("Day " + ++k, value);
}
    }
return series;
        }
      }
if(values[k]==0)
{  
    series.add("" + year_first++, new Double(0.0));      
}
else
{
    series.add("" + year_first++, new Double(values[k]));   
}
protected CategorySeries buildCategoryDataset(字符串标题,双[]值){
类别系列=新类别系列(标题);
int k=0,年;
字符串stru_年;
str_year=String.valueOf(Math.round(值[0]);
Log.i(“发明”、“年”+stru年);
年份=整数.parseInt(str_year);
Log.i(“发明”、“年鉴”+年份);
如果(标志值=1)
{

对于(k=0;k如果您不希望显示0值,请不要将它们添加到数据集中

以PieChartView中的createDataSet为例—在那里,他们使用标签添加值

private staticPieDataSet createDataSet(){
    DefaultPieDataset dataset = new DefaultPieDataset();
    dataset.setValue("One", new Double(43.2));
}
现在,当您添加自己的值时(我不确定如何添加,但我通过bundle数据类型传递它们,然后使用以下方法提取它们),您不能基于值进行添加:

private staticPieDataSet createDataSet(Double[] values, String[] labels){
    DefaultPieDataset dataset = new DefaultPieDataset();
    for(int i = 0; i < values.length; i++){
        if (value[i] > 0)
            dataset.setValue(labels[i], values[i]);
    }
}
private staticPieDataSet createDataSet(双[]值,字符串[]标签){
DefaultPieDataset=新的DefaultPieDataset();
对于(int i=0;i0)
setValue(标签[i],值[i]);
}
}

PS!!!顺便说一句,我不建议这样做-您的用户可能会对为什么某些数据会显示而其他数据不会显示感到困惑-而是将该值放在带标签的括号中,这样他们就可以看到该值为0。

在显示图表视图之前,像我对TimeChart所做的那样,这样做

    for(int i=0;i<selectedCollectionY.size();i++)
    {
        if(selectedCollectionY.get(i).equalsIgnoreCase("0"))
        {
            selectedCollectionY.remove(i);
            selectedCollectionX.remove(i);
        }
    }
    View mView = null;
    mView = ChartFactory.getTimeChartView(GraphActivity.this, Line_Chart
            .getLineDemoDataset(mSpinner.getSelectedItem().toString(),
                    selectedCollectionX, selectedCollectionY), Line_Chart
            .getLineDemoRenderer(mSpinner.getSelectedItem().toString()),
            "MMM dd");
    mView.setLayoutParams(new LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));
    mLinearLayout.removeAllViews();
    mLinearLayout.addView(mView);

for(int i=0;i您在这里做什么:

 if(values[k]==0)
    {  
    series.add(0.0);     /// Here some settings for display null value.But **here i Want to display nothing Only.** 
    }
        else
        series.add("" + year_first++, values[k]);   
    }
你应该这样做:

if(values[k] != 0) //or possibly (values[k] >= 0) since you cannot show negatives either
{  
    series.add("" + year_first++, values[k]);   
}
编辑:然后试试这个:

 protected CategorySeries buildCategoryDataset(String title, double[] values) {
CategorySeries series = new CategorySeries(title);
int k = 0,year;
String str_year;
str_year=String.valueOf(Math.round(values[0]));
Log.i("Invent","Year"+str_year);

year=Integer.parseInt(str_year);
Log.i("Invent","YearInt"+year);
    if(flag_val==1)
    {
        for(k=0;k<tot_yearno-1;k++)
        {
            if(values[k]==0)
        {  
        series.add(0.0);     /// Here some settings for display null value.But **here i Want to display nothing Only.** 
        }
            else
            series.add("" + year_first++, values[k]);   
        }
    }
    if(flag_val==0)
    {
    for (double value : values) {    

        if(value==0)
        {
        series.add("" + ++k, 0.0);
        }
        else
  series.add("Day " + ++k, value);
}
    }
return series;
        }
      }
if(values[k]==0)
{  
    series.add("" + year_first++, new Double(0.0));      
}
else
{
    series.add("" + year_first++, new Double(values[k]));   
}

为什么不在将数组传递给渲染器对象之前,从数组中删除所有不需要的条目?我想你需要重新表述这个问题-为什么要添加零基值?你真正想做的是什么?如果有人知道这个问题的答案,请与我分享……。尝试将你的双值装箱到双对象中,即。不要说“0.0”,而是说“新的双精度(0.0)”-请参阅下面我编辑的评论感谢回复[Quintin Balsdon]。但这在我的编码中不起作用。我使用的是categoryseries集合,没有选项作为集合值。请参阅我的编码……。如果我这样做,则问题会出现,因为渲染器无法设置。因此,我们应该匹配所有30个条目。我通过颜色值定义30个条目,以区分这30个条目。尝试编辑-我也有一个想法-你是插入“double”类型时可能会出现装箱问题-使用装箱的“double”类型(capitol D)。我将尝试通过编码步骤来防止出现空值。