1

高人,我将 1 到 10 之间的数字存储在数据库中,每个数字都存储在它存储在数据库中的时间。所以我有两组数据来绘制y轴上的数字和x轴上的时间。但是我想以某种方式做到这一点,以便它以小时为单位绘制时间。所以说我在 2 小时内拿了 4 个号码。例如 13:30 的 9 号,14:00 的 10 号;3 点 14:30,5 点 15:00。绘制轴很容易,但是当我想将 x 轴绘制为历史事件时,x 轴给了我 2 个问题,这意味着轴的名称将是 hrs,轴上的 0 将是当前时间,比如说renderer.addTextLabel(0, 15:07);轴上的 1将是一小时前或当前时间减去 60 分钟,因此renderer.addTextLabel(1, 14:07);轴上的 finnaly 2 将是 2 小时前renderer.addTextLabel(2, 13:07);. 我的图表有两个问题是一个,因为当前时间比绘制图表时的过去时间值更大,x 轴从 2 开始并下降到 0,而不是从 0 开始并上升到 2。其次,图表以 100 秒而不是代表时间的 60 秒递增。所以任何时间值都比我们说 13:59 和 14:00 之间有更大的差距,如果图表假设应该有数字 13:60 或 13:80 或 13:99 的值,如果我们计算的话是真的,但显然在增加下一个数字之前时间会上升到 60。我将如何解决这个问题?我是 android 和 achartengine 的新手,所以如果您不确定,请让我详细说明。谢谢

4

1 回答 1

2

首先,声明 2 个渲染器,一个用于数据,一个用于图表和一个 TimeSeries。

renderer = new XYMultipleSeriesRenderer();
dataset = new XYMultipleSeriesDataset();

timeSeries = new TimeSeries("");
dataset.addSeries(timeSeries);


currentRenderer = new XYSeriesRenderer();
currentRenderer.setLineWidth(2);
currentRenderer.setFillPoints(true);
currentRenderer.setColor(Color.CYAN);
currentRenderer.setShowLegendItem(false);
renderer.addSeriesRenderer(currentRenderer);

然后将数据添加到您的 TimeSeries(使用日期,而不是字符串或其他任何内容)

Date date = format.parse(datasList.get(i).first);
timeSeries.add(date, datasList.get(i).second);

然后设置您的图表,将其添加到您的视图并绘制它

charter.setChart(ChartFactory.getTimeChartView(view.getContext(),
                charter.getDataset(), charter.getRenderer(), "%tT"));
layout.addView(charter.getChart(), 0, new LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
charter.getChart().repaint();

就是这样,通常你有一个很棒的 TimeSeries 图表

于 2013-07-22T13:16:22.227 回答