我正在使用AChartEngine库处理饼图。在这里,我想禁用图表值,以便在图表上显示,但只有那些内容值为0的图表。如果有人知道,请与我分享。
pchart=ChartFactory.getPieChartView(this,buildCategoryDataset("Daily Basis", values),renderer);
re.addView(pchart);
}
}
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;
}
DataSet Here:
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;
}
}
答案 0 :(得分: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]));
}
答案 1 :(得分:0)
如果您不希望显示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]);
}
}
PS !!!我不建议这样做 - 您的用户可能会对为什么某些数据显示而其他数据不显示感到困惑 - 而是将值放在带括号的括号中,以便他们可以看到此值为0.
答案 2 :(得分: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);