2012-08-24 118 views
0

我现在正试图在android中使用achartengine创建一个条形图,希望我已经创建了它,但这里的问题是我创建的酒吧显示的距离每个酒吧越近,我需要显示那些酒吧下面的命令(ord1,ord2等,..)都在x轴上?如何在android中调整条形图中的条形?

任何人都可以让我知道解决方案来解决这个问题吗?

下面的图像将明确,请找到它

enter image description here

请找我的消息来源参考

BarActivity.java

public class BarActivity 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[] { "Order's profit of the year", " " }; 
List<double[]> values = new ArrayList<double[]>(); 
values.add(new double[] { 29, 83, 47, 33 }); 
values.add(new double[] {}); 

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

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

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

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

renderer.addXTextLabel(10.75, "ord1"); 
renderer.addXTextLabel(20.75, "ord2"); 
renderer.addXTextLabel(30.75, "ord3"); 
renderer.addXTextLabel(40.75, "ord4"); 

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

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; 
    } 
    } 

感谢您的宝贵时间!

+0

我回答了很多你的问题,从来没有收到你的反馈,所以我不会回答任何其他问题。 –

回答

1

您使用一些参数调用setChartSettings,这些参数将X轴的可视范围设置为0到100之间,对于Y轴也是如此。您可以调整这些参数以获得更好的放松显示效果。

您还可以使用renderer.setBarSpacing()来调整柏林图表中条间的间距。

+0

这工作正常。感谢您的关注。 – Nakshatran

+0

我有另一个疑问,我可以问你吗?如果是这样,我该如何与你联系。如果可能的话,请将你的mail_id或聊天室链接发给我 – Nakshatran