2012-08-28 5 views
2

안드로이드의 막대 차트 막대 사이의 공백을 언급하는 방법은 무엇입니까?안드로이드의 막대 사이에 공백 표시

enter image description here 감사는 사전에! .. 이미지 위

내 doubt.ie에 대해 당신이 명확하게됩니다 ,.

파란색 막대는 실제로 해당하는 x 축 값에 맞지 않습니다. 여기에 (Ord_1, Ord_2, Ord_3, Ord_4)가 있습니다.

x 축 값이 표시된 막대를 표시해야합니다. 어떻게해야합니까?

아래 BarChart.java을 내 소스를 찾아주세요 당신은 Y 축 0과 (30)과 같은 사이 가시 거리 X 축 설정 일부 매개 변수와 setChartSettings 호출

public class BarChart extends Activity 
{ 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    Intent intent = createIntent(); 
    startActivity(intent); 
} 

public Intent createIntent() 
{ 
    String[] titles = new String[] { "Profits per order", " " }; 

    List<double[]> values = new ArrayList<double[]>(); 

    values.add(new double[] { 6, 9, 21, 3 }); 
    values.add(new double[] { 0, 0, 0, 0}); 


    int[] colors = new int[] { Color.BLUE, Color.BLACK }; 

    XYMultipleSeriesRenderer renderer = buildBarRenderer(colors); 
    renderer.setOrientation(Orientation.HORIZONTAL); 

    setChartSettings(renderer, "Profit of the year 2012", " ", " ", 0,30, 0,30, Color.GRAY, Color.LTGRAY); 

    renderer.setXLabels(1); 
    renderer.setYLabels(10); 

    renderer.addXTextLabel(2.75, "Ord_1"); 
    renderer.addXTextLabel(6.75, "Ord_2"); 
    renderer.addXTextLabel(10.75, "Ord_3"); 
    renderer.addXTextLabel(14.75,"Ord_4"); 

    renderer.setBarSpacing(-1.75); 

    int length = renderer.getSeriesRendererCount(); 

    for (int i = 0; i < length; i++) 
    { 
     SimpleSeriesRenderer seriesRenderer = renderer.getSeriesRendererAt(i); 
     seriesRenderer.setDisplayChartValues(false); 
    } 

    return ChartFactory.getBarChartIntent(this, buildBarDataset(titles, values), renderer, 
     Type.DEFAULT); 
    } 

protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) 
{ 

    // creates a SeriesRenderer and initializes it with useful default values as well as colors 

    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 

    renderer.setAxisTitleTextSize(16); 
    renderer.setChartTitleTextSize(20); 
    renderer.setLabelsTextSize(15); 
    renderer.setLegendTextSize(15); 

    int length = colors.length; 

    for (int i = 0; i < length; i++) 
    { 
     SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
     r.setColor(colors[i]); 
     renderer.addSeriesRenderer(r); 
    } 
    return renderer; 
    } 

protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle, 
      String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor, 
      int labelsColor) 
{ 
// sets lots of default values for this renderer 

    renderer.setChartTitle(title); 
    renderer.setXTitle(xTitle); 
    renderer.setYTitle(yTitle); 
    renderer.setXAxisMin(xMin); 
    renderer.setXAxisMax(xMax); 
    renderer.setYAxisMin(yMin); 
    renderer.setYAxisMax(yMax); 
    renderer.setAxesColor(axesColor); 
    renderer.setLabelsColor(labelsColor); 

    renderer.setApplyBackgroundColor(true); 
    renderer.setBackgroundColor(Color.BLACK); 


} 

protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<double[]> values) 
{ 

    // adds the axis titles and values into the dataset 

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
    int length = titles.length; 

    for (int i = 0; i < length; i++) 
    { 
     CategorySeries series = new CategorySeries(titles[i]); 
     double[] v = values.get(i); 
     int seriesLength = v.length; 

     for (int k = 0; k < seriesLength; k++) 
     { 
     series.add(v[k]); 
     } 
     dataset.addSeries(series.toXYSeries()); 
    } 
    return dataset; 
} 
} 

답변

2

. 보다 편안한 디스플레이를 위해 이러한 매개 변수를 조정할 수 있습니다.

renderer.setBarSpacing()을 (를) 음수로 지정하십시오. 긍정적 인 것을 사용하고, 0.5f (간격은 바 두께의 절반과 같습니다)부터 시작하여 필요에 따라 조정하십시오.

관련 문제