首页 文章

Android - achartengine条形图问题

提问于
浏览
4

我使用achartengine在Android应用程序中绘制我的图表,并且条形图有2个问题 .

1:顶部栏中的值不对齐中心

2:图表中仅1 bar时条形图的宽度太小

enter image description here

enter image description here

这是我设置图表的代码

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修复了第二个问题 . 谢谢你,丹 .

2 回答

  • 0

    对于第一个问题,您可能希望升级到1.2.0每晚构建 .

    对于第二个,有: renderer.setBarWidth(widthInPixels); ,因为这是在系列中有一个单项时设置条宽的解决方案 .

  • 1

    为什么不使用 ChartFactory.getBarChartView 而不是 ChartFactory.getCombinedXYChartIntent

    我认为这将解决你的问题 .

相关问题