如何将自定义 x 轴标签应用于我的 AChartEngine BarGraph,同时保持与使用默认标签时相同的缩放/平移功能?问题是我有 100 多个数据点,所以我一次只想在屏幕上绘制 5 或 6 个标签。
默认功能最初绘制 3 个标签(在我的情况下为 0、50 和 100),放大时会绘制 4/5 个标签。向左或向右平移时,标签会随着相应的条形移动:
我尝试了两种方法,但是它们都没有给我与默认标签相同的缩放和平移功能。
1) 首次创建图形时生成 5 个均匀分布的标签。
这样做的问题是它只创建 5 个标签,因此当您放大得太远时,不会显示任何标签。
//For 100 data points, add five labels every 20 datapoints mRenderer.addXTextLabel(0, "label 1"); mRenderer.addXTextLabel(20, "label 2"); mRenderer.addXTextLabel(40, "label 3"); mRenderer.addXTextLabel(60, "label 4"); mRenderer.addXTextLabel(80, "label 5"); mRenderer.setXLabels(0);
2) 在我的 GraphicalView 上实现 ZoomListener 和 PanListener 接口。
该解决方案几乎可以工作,但是标签始终位于固定位置,并且在向左或向右平移图形时会使用新值“更新”。我需要他们与相应的酒吧一起移动。
graphicalView.addZoomListener( new ZoomListener() { @Override public void zoomApplied(ZoomEvent e) { double start = mRenderer.getXAxisMin(); double stop = (double)mRenderer.getXAxisMax(); double step = (double)(stop - start) / 5; mRenderer.clearXTextLabels(); for (double i = start; i <= stop; i += step) mRenderer.addXTextLabel(i+1, "label"+(int)i); mRenderer.setXLabels(0); } @Override public void zoomReset() { } }, true, true); graphicalView.addPanListener(new PanListener() { @Override public void panApplied() { double start = mRenderer.getXAxisMin(); double stop = (double)mRenderer.getXAxisMax(); double step = (double)(stop - start) / 5; mRenderer.clearXTextLabels(); for (double i = start; i <= stop; i += step) mRenderer.addXTextLabel(i+1, "label"+(int)i); mRenderer.setXLabels(0); } });
我要实现的自定义标签是以分钟为单位的时间。这可以使用带有条形图的 TimeSeries 类来完成吗?