【问题标题】:how to do time on x axis in achartengine如何在achartengine的x轴上做时间
【发布时间】:2014-10-26 18:09:49
【问题描述】:

各位高人,我将 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 的新手,所以如果您不确定,请让我详细说明。谢谢

【问题讨论】:

  • 我建议你构建一个 TimeChart 而不是一个被黑的 LineChart。
  • 有什么区别,你有任何关于如何做到这一点的教程的链接,谢谢

标签: android android-layout achartengine


【解决方案1】:

首先,声明 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 图表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多