我使用aChartEngine库创建了条形图 . 任何人都可以帮助我如何增加条的宽度和将条位置在X轴的中心?
这是我的BarGraph类:
public class BarGraph {
public Intent getIntent(Context context){
XYMultipleSeriesRenderer mrenderer = new XYMultipleSeriesRenderer();
double[] range = {0,5,0,5};
int[] y = {24,30,12};
CategorySeries series1 = new CategorySeries("Today");
CategorySeries series2 = new CategorySeries("Next day");
CategorySeries series3 = new CategorySeries("2 days later");
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
for (int i=0;i<3;i++){
switch(i){
case 0:
series1.add(y[0]);
dataset.addSeries(series1.toXYSeries());
break;
case 1:
series2.add(y[1]);
dataset.addSeries(series2.toXYSeries());
break;
case 2:
series3.add(y[2]);
dataset.addSeries(series3.toXYSeries());
break;
}
}
XYSeriesRenderer renderer1 = new XYSeriesRenderer();
renderer1.setColor(Color.GREEN);
XYSeriesRenderer renderer2 = new XYSeriesRenderer();
renderer2.setColor(Color.BLUE);
XYSeriesRenderer renderer3 = new XYSeriesRenderer();
renderer3.setColor(Color.RED);
mrenderer.setAxisTitleTextSize(16);
mrenderer.setChartTitleTextSize(20);
mrenderer.setLabelsTextSize(15);
mrenderer.setLegendTextSize(15);
mrenderer.setBarSpacing(0);
mrenderer.setXLabels(1);
mrenderer.addXTextLabel(2.5, "Outstanding jobs");
mrenderer.setMargins(new int[] {20, 30, 15, 0});
mrenderer.setAxesColor(Color.WHITE);
mrenderer.setChartTitle("Work per day");
mrenderer.setXTitle("Days");
mrenderer.setInitialRange(range, 1);
mrenderer.setBarSpacing(1);
mrenderer.setXAxisMin(0);
mrenderer.setXAxisMax(5);
mrenderer.setYAxisMin(0);
mrenderer.setPanEnabled(false, false);
mrenderer.setZoomEnabled(false, false);
mrenderer.addSeriesRenderer(renderer1);
mrenderer.addSeriesRenderer(renderer2);
mrenderer.addSeriesRenderer(renderer3);
Intent intent = ChartFactory.getBarChartIntent(context, dataset, mrenderer, Type.DEFAULT);
return intent;
}}
这是我得到的条形图的截图,
我需要这样的条形图,
我怎样才能实现这一目标?请帮我 .
4 回答
如果你想设置条的宽度 -
试试这个...
我发现解决问题的唯一方法是非常难看,但在他们改进achartengine的色彩管理之前,它可能会得到很好的效果 .
首先根据larlins建议删除for-case .
然后将空点添加到与其他系列中的填充点对应的其他系列:
同时将
BarSpacing
设置为0,将Type
设置为Type.STACKED
而不是Type.DEFAULT
. 我认为如果你删除Label
并将XTitle
更改为"Outstanding Jobs"会更好看删除for循环和切换案例我认为这是不必要的 . 并添加两个空白类别系列,如
将它放在CategoriesSeries series1之后,另一个放在CategoriesSeries series2之后 . 然后在series1之后的两个地方添加零值,而在series2之后添加另一个
和渲染器一样:将两个XYSeriesRenderer设置为透明颜色并在renderer1之后粘贴它们,另一个在renderer2之后粘贴它们
并看到你得到你想要的魔法
我得到了答案.... :)我使用setBarspacing,但设置值0或0.5 ...图表可以移动,所以值很容易看到...... :)