使用android绘图库并且正在努力如何将绘图上的条形图调整到相同的大小。由于某种原因,该系列中的第一个看起来比其余的更宽。例如,见图片。
如您所见,域标签位置正确并读取正确的值。以下是自定义XYPlot
。
BarFormatter series1Format = new BarFormatter();
plot.addSeries(series, series1Format);
BarRenderer renderer = (BarRenderer) plot.getRenderer( BarRenderer.class );
renderer.setBarRenderStyle(BarRenderer.BarRenderStyle.SIDE_BY_SIDE);
renderer.setBarWidthStyle(BarRenderer.BarWidthStyle.VARIABLE_WIDTH);
renderer.setBarGap(2.0f);
Paint series1Fill = new Paint();
series1Fill.setColor(plot.getContext().getResources().getColor(R.color.accent));
series1Format.setFillPaint(series1Fill);
plot.setTicksPerRangeLabel(2);
plot.getGraphWidget().setDomainGridLinePaint(null);
plot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 1);
plot.setRangeLowerBoundary(0,BoundaryMode.FIXED);
plot.setUserDomainOrigin(1);
plot.setDomainLowerBoundary(0.5, BoundaryMode.FIXED);
plot.setDomainUpperBoundary(series.size() + 0.5, BoundaryMode.FIXED);
plot.setBorderStyle(XYPlot.BorderStyle.NONE, null, null);
plot.setDomainValueFormat(new DecimalFormat("0"));
plot.setRangeValueFormat(new DecimalFormat("0"));
显然,对于像上面这个例子这样的小数据系列,这一点更为明显。感谢任何帮助。
答案 0 :(得分:0)
至少部分问题是由于您使用了 VARIABLE_WIDTH 。在此模式下,Androidplot计算每个条的宽度,均匀地细分绘图图形空间。如果您在边缘有数据(就像上面的条#3那样),它会被截止,因为计算出的条形宽度会越过边界。
我建议将一些边框颜料应用到您的酒吧格式化,以便在您的酒吧被截止时更容易看到。要解决此问题,您至少有3个选项:
使用FIXED_WIDTH栏。应该是自我解释的。
设置固定域边界并在比例尺的两端显示额外值:
plot.setDomainBoundaries(-1, 3, BoundaryMode.FIXED);
添加网格填充以允许绘制边 充分。在Androidplot的最新版本中,您可以执行类似的操作 这样:
plot.getGraphWidget().getGridBox().setPaddingLeft(PixelUtils.dpToPix(70));
plot.getGraphWidget().getGridBox().setPaddingRight(PixelUtils.dpToPix(70));
你可能不得不玩它来获得正确的设置。还要记住,随着屏幕越来越宽,条形图也越来越宽;在纵向模式下看起来不错的东西在风景中可能看起来很糟糕。
另一方面,我很难过,为什么在第一个栏上方的图形实际上看起来比中间栏宽。虽然没有看到更多的代码,但我无法说出造成这种情况的原因。