在X轴和Y轴外可见的图表

5
我正在使用achartengine来展示应用程序通过socket连接不断接收的数据。点会根据时间绘制在x轴上。一旦图表完成,用户就可以在图表上进行平移和缩放操作。一切都非常流畅。唯一的问题是,当用户缩放图表时,图表的部分内容也会出现在X和Y轴的另一侧。
我该如何限制图表不可在X和Y轴之外显示?
以下是我的一部分代码。
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();

renderer.setChartTitleTextSize(12);
renderer.setLabelsTextSize(15);
renderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01));
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.TRANSPARENT);
renderer.setZoomEnabled(true, true);
    renderer.setPointSize(5f);
renderer.setShowGrid(true);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setLabelsColor(getResources().getColor(R.color.black));
renderer.setXLabelsColor(getResources().getColor(R.color.black));
renderer.setYLabelsColor(0, getResources().getColor(R.color.black));
renderer.setDisplayValues(true);
renderer.setSelectableBuffer(20);
renderer.setShowLegend(false);

    renderer.setRange(new double[] { timeSeriesChart.getMinX(),
            timeSeriesChart.getMaxX(), 0/* minY */, maxY });

    renderer.setPanLimits(getChartLimit(
     isTimeChart, timeSeriesChart.getMinX(), timeSeriesChart.getMaxX(),
     (maxY*-1)+timeSeriesChart.getMinY(),
     maxY));

enter image description here


你正在使用哪个版本的AChartEngine? - Dan D.
我正在使用1.1.0版本。 - Umesh
你是从这里下载的吗:http://code.google.com/p/achartengine/downloads/list? - Dan D.
3
嗨,丹,我已经解决了这个问题。问题在于这一行代码 - renderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01)); 我将它更改为 renderer.setMarginsColor(Color.WHITE); 这样就可以了。不知怎么地,renderer.setMarginsColor(Color.TRANSPARENT) 没有起作用。幸运的是我的背景是白色的,所以对我来说没有问题。 - Umesh
1
谢谢 @Umesh,但是我的背景不是白色的 :-( - mcd
显示剩余2条评论
1个回答

0

我有类似的需求。我通过将我的数据集夹紧到最大和最小值来解决它。当然,在我的情况下,这个方法可行是因为我在将服务器接收到的数据放入数据集之前对其进行了转换。

TimeSeries mTimeSeries;

...
...

private void addValue(Date time, double val){
    if(val >= MAX_VALUE){
        val = MAX_VALUE;
    }
    if(val <= MIN_VALUE){
        val = MIN_VALUE;
    }

    mTimeSeries.add(time, val);
}

你的应用程序允许缩放吗?如果是,你是如何处理的? - Ethan Holshouser
不行。我已经禁用了缩放。 - curioustechizen
谢谢您的回答,但问题特别涉及到平移/缩放。 - Ethan Holshouser
1
你可以通过执行 mTimeSeries.add(time, Math.max(MIN_VALUE,Math.min(MAX_VALUE,val))); 来简化那段代码。 - Pedro Oliveira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接