0

AChartEngine ライブラリを使用して円グラフに取り組んでいます。ここでは、グラフの値を無効にしてグラフに表示したいのですが、コンテンツの値が 0 の値のみを表示したいと考えています。

コーディング:

                    pchart=ChartFactory.getPieChartView(this,buildCategoryDataset("Daily Basis", values),renderer);

                    re.addView(pchart);
                    }
                }

BuildCategory レンダラー:

 protected DefaultRenderer buildCategoryRenderer(int[] colors) {
        DefaultRenderer renderer = new DefaultRenderer();
        renderer.setLabelsTextSize(10);
        renderer.setLegendTextSize(15);
        renderer.setShowLegend(true);

        renderer.setExternalZoomEnabled(true);
        renderer.setZoomEnabled(true);
        renderer.setZoomButtonsVisible(true);
        renderer.setShowAxes(true);
      //  renderer.setMargins(new int[] { 20, 30, 15, 0 });
        for (int color : colors) {
          SimpleSeriesRenderer r = new SimpleSeriesRenderer();
          r.setColor(color);
          renderer.addSeriesRenderer(r);
        }
        return renderer;
      }

ここにデータセット:

 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;
        }
      }
4

3 に答える 3

1

ここで行っていること:

 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]);   
}

編集:これを試してください:

if(values[k]==0)
{  
    series.add("" + year_first++, new Double(0.0));      
}
else
{
    series.add("" + year_first++, new Double(values[k]));   
}
于 2012-07-04T12:11:15.883 に答える
0

0 の値を表示したくない場合は、それらをデータセットに追加しないでください。

例として、PieChartView の createDataSet を見てください。ラベル付きの値が追加されています。

private staticPieDataSet createDataSet(){
    DefaultPieDataset dataset = new DefaultPieDataset();
    dataset.setValue("One", new Double(43.2));
}

独自の値を追加する場合 (どのように行うかはわかりませんが、バンドル データ型を介して渡し、次のメソッドで抽出します)、値に基づいて追加することはできません。

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]);
    }
}

PS!!! ちなみに、これはお勧めしません。表示されるデータと表示されないデータがある理由について、ユーザーが混乱する可能性があります。むしろ、この値が 0 であることを確認できるように、値をラベルと共に括弧で囲みます。

于 2012-07-04T11:35:42.550 に答える
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);
于 2012-07-04T11:37:28.363 に答える