Android 在aChartEngine中平移时与Y轴重叠的条
我正在开发一个显示条形图的应用程序。根据接收到的值动态绘制条形图,条形图数据以MB/KB为单位Android 在aChartEngine中平移时与Y轴重叠的条,android,graph,bar-chart,achartengine,pan,Android,Graph,Bar Chart,Achartengine,Pan,我正在开发一个显示条形图的应用程序。根据接收到的值动态绘制条形图,条形图数据以MB/KB为单位 代码片段:- private void graphinit(ArrayList<Integer> graphInDataList, ArrayList<Integer> graphOutDataList) { mRenderer.setXAxisMin(0); mRenderer.setXAxisMax(graphXMaxLimit); mRendere
代码片段
:-
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));
}
我在onCreate()中使用了graphinit(arrlist1,arrlist2)方法
问题:
在条形图上平移时,条形图与Y轴重叠
屏幕截图默认屏幕:
屏幕截图平移屏幕:
我还为此设定了pan限制。问题是什么?
提前感谢。您正在正确设置平移限制,但请注意,杆本身的宽度不是零单位。因此,必须将X轴最小值设置为低于最小X平移限制的值,例如
-0.5
您甚至可以在运行时更改平移限制值,方法是侦听缩放事件并相应地更改限制
mRenderer.setPanLimits(new double[] {-0.5, graphXMaxLimit, 0, max});
mChartView.addZoomListener(new ZoomListener() {
public void zoomApplied(ZoomEvent e) {
double currentMinX = mRenderer.getXAxisMin();
double currentMaxX = mRenderer.getXAxisMax();
double coef = (graphXMaxLimit + 0.5) / (currentMaxX - currentMinX);
mRenderer.setPanLimits(new double[] {-0.5 / coef, graphXMaxLimit, 0, max});
}
public void zoomReset() {
Log.i("Zoom", "Reset");
}
}, true, true);
这是我的工作
mRenderer.setXAxisMin(-0.5); //for first bar overlaps y-axis
我认为你应该使用Ist。使用Ist有什么问题?@keshav:杆的高度与lebels标记轴交叉..增加你的setYAxisMax();因为数值超过了最大值。他们有没有办法自动增加它?你应该得到最大可能值的程序将面临同样的问题。
mRenderer.setXAxisMin(-0.5); //for first bar overlaps y-axis