【发布时间】:2014-02-02 15:35:35
【问题描述】:
我正在开发在其中显示条形图的应用程序。条形图是根据接收到的动态值绘制的,条形图数据以 MB/KB 为单位。
Code Snippet :-
private void graphinit(ArrayList<Integer> graphInDataList, ArrayList<Integer> graphOutDataList)
{
mRenderer.setXAxisMin(0);
mRenderer.setXAxisMax(graphXMaxLimit);
mRenderer.setYAxisMin(0);
// mRenderer.setYAxisMax(100);
int max = getMaximumNumber(graphInDataList, graphOutDataList);
mRenderer.setYAxisMax(max);
double[] limits = new double[] {0, graphXMaxLimit, 0, max};
mRenderer.setPanLimits(limits);
mRenderer.setBarSpacing(0.3f);
mRenderer.setDisplayChartValues(false);
mRenderer.setShowAxes(true);
mRenderer.setShowLegend(false);
mRenderer.setShowLabels(true);
mRenderer.setPanEnabled(true, false);
mRenderer.setClickEnabled(false);
mRenderer.setZoomEnabled(true, false);
mRenderer.setZoomButtonsVisible(false);
mRenderer.setShowGrid(false);
mRenderer.setYLabelsPadding(3);
mRenderer.setXTitle("Analysis Duration in mins");
mRenderer.setYTitle("Data in KB");
// mRenderer.setXAxisMin(-0.5);
mRenderer.setYLabelsAlign(Align.RIGHT);
// set up the margin to the graph
mRenderer.setMargins(new int[] { 5, 40, 0, 5});
// mRenderer.setXAxisMin(1);
mRenderer.setXAxisMin(-0.5);
// mRenderer.setXAxisMax(60);
inDataSeries = new XYSeries("InData");
for (int i = 0; i < graphInDataList.size(); i++) {
inDataSeries.add(i, graphInDataList.get(i));
}
outDataSeries = new XYSeries("OutData");
for (int i = 0; i < graphOutDataList.size(); i++) {
outDataSeries.add(i, graphOutDataList.get(i));
}
mDataset.addSeries(inDataSeries);
mDataset.addSeries(outDataSeries);
if(graphInDataList.size()>0){
right_left=(int) (graphInDataList.size()/60);
}
XYSeriesRenderer in_data_renderer = new XYSeriesRenderer();
in_data_renderer.setColor(Color.GREEN);
XYSeriesRenderer out_data_renderer = new XYSeriesRenderer();
out_data_renderer.setColor(Color.RED);
mRenderer.addSeriesRenderer(in_data_renderer);
mRenderer.addSeriesRenderer(out_data_renderer);
mRenderer.setApplyBackgroundColor(true);
mRenderer.setBackgroundColor(Color.TRANSPARENT);
mRenderer.setMarginsColor(getResources().getColor(R.color.transparent_background));
}
EDIT :
在 onResume() 中创建
if (mChartView == null) {
LinearLayout layout = (LinearLayout) findViewById(R.id.linear_chart);
mChartView = ChartFactory.getBarChartView(this, mDataset,
mRenderer, Type.STACKED);
Logger.vLog("HistoryDetailScreen", "mChartView : "+mChartView);
layout.addView(mChartView);
@SuppressWarnings("unused")
boolean enabled = mDataset.getSeriesCount() > 0;
} else {
mChartView.repaint();
}
我在 onCreate() 中使用了 graphinit(arrlist1, arrlist2) 方法。
PROBLEM :
当我们在条形图上进行平移时,条形与 Y 轴重叠。
SCREENSHOT Default Screen :
SCREENSHOT Panned Screen :
我还为此设置了平移限制。什么是问题? 提前谢谢..
【问题讨论】:
-
我觉得你应该使用Ist 使用Ist有什么问题?
-
@keshav:条形高度穿过轴标记..
-
增加你的 setYAxisMax();因为值超过了最大值。
-
他们有什么办法自动增加吗?
-
你应该以编程方式获得最大可能值
标签: android graph bar-chart achartengine pan