【问题标题】:Graph visible outside X and Y axis图表在 X 和 Y 轴外可见
【发布时间】:2013-09-07 18:00:21
【问题描述】:

我正在使用 achartengine 来处理我的应用程序通过套接字连接不断接收的数据。该点是针对时间绘制的,这是我的 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));

【问题讨论】:

  • 你使用的是什么版本的 AChartEngine?
  • 我使用的是 1.1.0 版本
  • 你是从这里下载的吗:code.google.com/p/achartengine/downloads/list?
  • 嗨,丹,我想通了。问题出在这一行 - renderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01));将其更改为 renderer.setMarginsColor(Color.WHITE);这就是诀窍.. 不知何故 renderer.setMarginsColor(Color.TRANSPARENT) 不起作用。幸运的是我的背景是白色的,所以对我来说没有问题..
  • 谢谢@Umesh,但我的背景不是白色的:-(

标签: android graph achartengine


【解决方案1】:

我也有类似的要求。我通过将数据集限制为最大值和最小值来解决它。当然,在我的情况下它是有效的,因为我正在转换从服务器接收到的数据,然后再将其放入我的数据集中。

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

【讨论】:

  • 您是否允许放大您的应用程序?如果是这样,您是如何处理的?
  • 不。我已禁用缩放
  • 感谢您的回答,但该问题专门与平移/缩放有关。
  • 你可以通过mTimeSeries.add(time, Math.max(MIN_VALUE,Math.min(MAX_VALUE,val)));来简化代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多