我有一個BarChart,其中一些值設置爲MathHelper.NULL_VALUE,因此它們不會呈現(它應該在圖表中留下空白位置)。但是,空值仍然呈現,看起來更像0.0,如下所示。AChartEngine呈現空值
如果我登錄打印我可以看到NULL_VALUEs出現在該系列中的值:
10-23 09:50:24.206: DEBUG/ConsumptionChartBuilder(27359): x:16.0Y:1.0
10-23 09:50:24.206: DEBUG/ConsumptionChartBuilder(27359): x:17.0Y:3.0
10-23 09:50:24.206: DEBUG/ConsumptionChartBuilder(27359): x:18.0Y:1.7976931348623157E308
10-23 09:50:24.206: DEBUG/ConsumptionChartBuilder(27359): x:19.0Y:1.7976931348623157E308
10-23 09:50:24.216: DEBUG/ConsumptionChartBuilder(27359): x:20.0Y:6.0
10-23 09:50:24.216: DEBUG/ConsumptionChartBuilder(27359): x:21.0Y:1.7976931348623157E308
設置/取消設置最小Y值不會改變任何東西。
我真的需要0和空並留下指出條形圖導致一些進一步的奇渲染(空白空間是不正確的寬度)...
有誰知道區分如何不在AChartEngine BarChart中呈現空值?
編輯:重現它的一些代碼。
XYMultipleSeriesDataset multipleSeriesDataset = new XYMultipleSeriesDataset();
XYMultipleSeriesRenderer multipleSeriesRenderer = new XYMultipleSeriesRenderer();
XYSeriesRenderer renderer= new XYSeriesRenderer();
//set up renderer(s)
renderer.setColor(Color.RED);
multipleSeriesRenderer = new XYMultipleSeriesRenderer();
multipleSeriesRenderer.setInScroll(true);
multipleSeriesRenderer.setPanEnabled(false, false);
multipleSeriesRenderer.setZoomEnabled(false, false);
multipleSeriesRenderer.setAntialiasing(true);
multipleSeriesRenderer.setShowLabels(true);
multipleSeriesRenderer.setShowLegend(false);
multipleSeriesRenderer.setYLabelsAlign(Paint.Align.LEFT);
multipleSeriesRenderer.setApplyBackgroundColor(true);
multipleSeriesRenderer.setMargins(new int[]{20, 3, 0, 0});
multipleSeriesRenderer.setMarginsColor(Color.WHITE);
multipleSeriesRenderer.addSeriesRenderer(renderer);
multipleSeriesRenderer.setXLabelsAlign(Paint.Align.CENTER);
//text size
final float scale = getResources().getDisplayMetrics().density;
multipleSeriesRenderer.setLabelsTextSize((int)(scale*10+0.5f));
multipleSeriesRenderer.setXLabelsColor(Color.BLACK);
multipleSeriesRenderer.setYLabelsColor(0,Color.BLACK);
multipleSeriesRenderer.setShowAxes(false);
multipleSeriesRenderer.setBackgroundColor(Color.TRANSPARENT);
//set max and min of axis
multipleSeriesRenderer.setYAxisMin(0);
multipleSeriesRenderer.setYAxisMax(10);
multipleSeriesRenderer.setXAxisMax(7.5);
multipleSeriesRenderer.setXAxisMin(0.5);
multipleSeriesRenderer.setBarSpacing(0.1);
//set up series
XYSeries series = new XYSeries("test");
series.add(1, MathHelper.NULL_VALUE);
series.add(2, 1);
series.add(3, 6);
series.add(4, MathHelper.NULL_VALUE);
series.add(5, 0);
series.add(6, 5);
series.add(7, MathHelper.NULL_VALUE);
multipleSeriesDataset.addSeries(series);
//add x labels to replicate my original code
multipleSeriesRenderer.setXLabels(0);
multipleSeriesRenderer.addXTextLabel(1, "Mon");
multipleSeriesRenderer.addXTextLabel(2, "Tue");
multipleSeriesRenderer.addXTextLabel(3, "Wed");
multipleSeriesRenderer.addXTextLabel(4, "Thu");
multipleSeriesRenderer.addXTextLabel(5, "Fri");
multipleSeriesRenderer.addXTextLabel(6, "Sat");
multipleSeriesRenderer.addXTextLabel(7, "Sun");
((LinearLayout)findViewById(R.id.layout_graph)).addView(ChartFactory.getBarChartView(this, multipleSeriesDataset, multipleSeriesRenderer, BarChart.Type.DEFAULT));
編輯號2:
空值:上面的代碼截圖
如果我不加空值,則圖形看起來歪斜如圖所示,這些條紋相互接觸。
向我們展示一些代碼,否則我們無法提供幫助。 –
公平點,補充。 – DavidBriggs
請注意,您添加的代碼會在屏幕截圖顯示其他內容時顯示某些內容。 –