我使用achartengine在Android应用程序中绘制我的图表,并且条形图有2个问题。
1:顶部栏中的值不对齐中心
2:图表中仅1 bar时条形图的宽度太小
这是我设置图表的代码
GraphicalView mChart;
// Creating an XYSeries for Income
XYSeries incomeSeries = new XYSeries("\n" + note);
// Adding data to Series
// Arraylist<String> althongtin include input data (some numbers character, eg: {125, 4356, 50000})
for(int i=0;i<althongtin.size();i++){
incomeSeries.add(i, Double.parseDouble(althongtin.get(i)));
}
// Creating a dataset to hold each series
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
// Adding Income Series to the dataset
dataset.addSeries(incomeSeries);
XYSeriesRenderer incomeRenderer = new XYSeriesRenderer();
incomeRenderer.setColor(color);
incomeRenderer.setChartValuesTextSize(20);
incomeRenderer.setFillPoints(true);
incomeRenderer.setDisplayChartValues(true);
incomeRenderer.setChartValuesTextAlign(Paint.Align.CENTER);
XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
multiRenderer.setXLabels(0);
multiRenderer.setChartTitle(ten);
multiRenderer.setXTitle(cotx);
multiRenderer.setYTitle(coty);
multiRenderer.setYLabelsAlign(Paint.Align.LEFT);
multiRenderer.setBarSpacing(1);
multiRenderer.setBarWidth(50);
multiRenderer.setYAxisMin(0);
multiRenderer.setYAxisMax(max + (max/10));
multiRenderer.setXAxisMin(-1);
multiRenderer.setXAxisMax(althongtin.size() + 1);
multiRenderer.setLabelsTextSize(15);
multiRenderer.setLegendTextSize(20);
multiRenderer.setAxisTitleTextSize(20);
multiRenderer.setChartTitleTextSize(20);
multiRenderer.setLabelsColor(Color.BLACK);
multiRenderer.setAxesColor(Color.BLACK);
multiRenderer.setApplyBackgroundColor(true);
multiRenderer.setBackgroundColor(Color.TRANSPARENT);
multiRenderer.setMarginsColor(Color.argb(0,255,255,255));
multiRenderer.setXLabelsColor(Color.BLACK);
multiRenderer.setYLabelsColor(0, Color.BLACK);
multiRenderer.addSeriesRenderer(incomeRenderer);
String[] types = new String[] {BarChart.TYPE};
mChart = (GraphicalView) ChartFactory.getCombinedXYChartView(getBaseContext(), dataset, multiRenderer, types);
multiRenderer.setClickEnabled(true);
multiRenderer.setSelectableBuffer(10);
chartLayout.addView(mChart);
感谢。
更新:第二个问题是通过升级到achartengine 1.2.0来解决的。谢谢yoou,Dan。
答案 0 :(得分:1)
对于第一个问题,您可能希望升级到每晚1.2.0版本。
对于第二个,有renderer.setBarWidth(widthInPixels);
,因为这是在系列中有一个单项时设置条宽的解决方案。
答案 1 :(得分:0)
为什么不使用ChartFactory.getBarChartView
代替ChartFactory.getCombinedXYChartIntent
?
我认为这会解决你的问题。