2016-09-26 84 views
2

ScreenShotAChartEngine定制轴

您好,我有条形图麻烦,我必须删除该贴在上面的数字X和Y轴,但我不知道如何做到这一点,这是我创建的代码chart:`String [] monthDays = new String [lastDayOfMonth];

// Create month days labels 
    int[] x = new int[lastDayOfMonth]; 
    for (int i = 0; i < monthDays.length; i++) { 
     monthDays[i] = "" + (i + 1); 
     x[i] = i + 1; 
    } 

    // Create series 
    XYSeries majorSeries = new XYSeries("Major"); 
    XYSeries middleSeries = new XYSeries("Middle"); 
    XYSeries minorSeries = new XYSeries("Minor"); 
    XYSeries restSeries = new XYSeries("Rest"); 

    // Add data to series 
    for(int i = 0; i < x.length; i++) { 
     majorSeries.add(i, majorData[i]); 
     middleSeries.add(i, middleData[i]); 
     minorSeries.add(i, minorData[i]); 
     restSeries.add(i, restData[i]); 
    } 

    // Create series data set 
    XYMultipleSeriesDataset xyMultipleSeriesDataset = new XYMultipleSeriesDataset(); 
    // Add series to data set 
    xyMultipleSeriesDataset.addSeries(restSeries); 
    xyMultipleSeriesDataset.addSeries(minorSeries); 
    xyMultipleSeriesDataset.addSeries(middleSeries); 
    xyMultipleSeriesDataset.addSeries(majorSeries); 

    // Create series render for major data set 
    XYSeriesRenderer majorXySeriesRenderer = new XYSeriesRenderer(); 
    majorXySeriesRenderer.setColor(Color.parseColor("#4797b4")); 
    majorXySeriesRenderer.setFillPoints(true); 
    majorXySeriesRenderer.setLineWidth(2); 

    // Create series render for middle data set 
    XYSeriesRenderer middleXySeriesRenderer = new XYSeriesRenderer(); 
    middleXySeriesRenderer.setColor(Color.parseColor("#4ec697")); 
    middleXySeriesRenderer.setFillPoints(true); 
    middleXySeriesRenderer.setLineWidth(2); 

    // Create series render for minor data set 
    XYSeriesRenderer minorXySeriesRenderer = new XYSeriesRenderer(); 
    minorXySeriesRenderer.setColor(Color.parseColor("#1fb1ba")); 
    minorXySeriesRenderer.setFillPoints(true); 
    minorXySeriesRenderer.setLineWidth(2); 

    // Create series render for rest data set 
    XYSeriesRenderer restXySeriesRenderer = new XYSeriesRenderer(); 
    restXySeriesRenderer.setColor(Color.parseColor("#c2c2c2")); 
    restXySeriesRenderer.setFillPoints(true); 
    restXySeriesRenderer.setLineWidth(2); 

    // Creating XYMultipleSeriesRenderer to customize chart 
    XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer(); 
    multiRenderer.setOrientation(XYMultipleSeriesRenderer.Orientation.HORIZONTAL); 

    // Add labels to x 
    for(int i = 0; i < monthDays.length; i++) { 
     multiRenderer.addXTextLabel(i, monthDays[i]); 
    } 

    multiRenderer.setXLabels(0); 
    multiRenderer.setYLabels(0); 
    multiRenderer.setXLabelsColor(Color.BLACK); 
    multiRenderer.setYLabelsColor(0, Color.BLACK); 
    multiRenderer.setLabelsTextSize(24); 
    multiRenderer.setZoomButtonsVisible(false); 
    multiRenderer.setPanEnabled(true, false); 
    multiRenderer.setPanLimits(new double[] {-0.75, 31, 0, 0}); 
    multiRenderer.setClickEnabled(false); 
    multiRenderer.setZoomEnabled(false, false); 
    multiRenderer.setShowGridY(false); 
    multiRenderer.setShowGridX(false); 
    multiRenderer.setFitLegend(true); 
    multiRenderer.setShowAxes(false); 
    multiRenderer.setShowLegend(false); 
    multiRenderer.setShowGrid(false); 
    multiRenderer.setZoomEnabled(false); 
    multiRenderer.setExternalZoomEnabled(false); 
    multiRenderer.setAntialiasing(true); 
    multiRenderer.setInScroll(true); 
    multiRenderer.setLegendHeight(30); 
    multiRenderer.setXLabelsAlign(Paint.Align.CENTER); 
    multiRenderer.setYLabelsAlign(Paint.Align.LEFT); 
    multiRenderer.setTextTypeface("sans_serif", Typeface.NORMAL); 
    multiRenderer.setYAxisMax(maxValue + (maxValue * 2/100)); 
    multiRenderer.addYTextLabel(0, currency + "0.0"); 
    if (maxValue == 0) { 
     multiRenderer.setYAxisMax(500); 
     multiRenderer.addYTextLabel(500, currency + maxValue); 
    } else { 
     multiRenderer.addYTextLabel(multiRenderer.getYAxisMax(), currency + maxValue); 
    } 
    multiRenderer.setXAxisMin(-0.5); 
    multiRenderer.setXAxisMax(11); 
    multiRenderer.setBarSpacing(0.5); 
    multiRenderer.setBackgroundColor(Color.TRANSPARENT); 
    multiRenderer.setMarginsColor(Color.argb(0x00, 0xff, 0x00, 0x00)); 
    multiRenderer.setApplyBackgroundColor(true); 
    multiRenderer.setMargins(new int[]{30, 30, 30, 30}); 

    // Add all renders to multi render 
    multiRenderer.addSeriesRenderer(restXySeriesRenderer); 
    multiRenderer.addSeriesRenderer(minorXySeriesRenderer); 
    multiRenderer.addSeriesRenderer(middleXySeriesRenderer); 
    multiRenderer.addSeriesRenderer(majorXySeriesRenderer); 

    // Create array of chart types 
    CombinedXYChart.XYCombinedChartDef[] types = new CombinedXYChart.XYCombinedChartDef[]{ 
      new CombinedXYChart.XYCombinedChartDef(BarChart.TYPE, 0), 
      new CombinedXYChart.XYCombinedChartDef(BarChart.TYPE, 1), 
      new CombinedXYChart.XYCombinedChartDef(BarChart.TYPE, 2), 
      new CombinedXYChart.XYCombinedChartDef(BarChart.TYPE, 3)}; 

    // Get view of chart 
    GraphicalView graphicalView = ChartFactory.getCombinedXYChartView(getContext(), xyMultipleSeriesDataset, multiRenderer, types); 

    chart.removeAllViews(); 
    chart.addView(graphicalView);` 

回答

0

解决 要做到这一点,你可以设置标签的颜色相同,你的背景或透明

multiRenderer.setXLabelsColor(Color.WHITE); 
multiRenderer.setYLabelsColor(0, Color.WHITE); 

这一点,你必须创建自己的类,它扩展图表类巫婆需要

public class MyChart extends CombinedXYChart { 

int color; 

public MyChart(XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, XYCombinedChartDef[] chartDefinitions) { 
    super(dataset, renderer, chartDefinitions); 
} 

@Override 
protected void drawString(Canvas canvas, String text, float x, float y, Paint paint) { 
    paint.setColor(color); 
    super.drawString(canvas, text, x, y, paint); 
} 

public void setColor(int color) { 
    this.color = color; 
}} 

最后,您必须使用自己的类来创建graphicalView并将其置于布局中

MyChart myChart = new MyChart(xyMultipleSeriesDataset, multiRenderer, types); 
myChart.setColor(Color.BLACK); 
GraphicalView graphicalView = new GraphicalView(getContext(), myChart); 

此步骤将覆盖从AbstractChart类巫法只绘制文本值在图表中,但棍棒将保持相同的颜色作为背景,所以他们会无形