Skip to content

Instantly share code, notes, and snippets.

@paulodiogo
Forked from stevedonovan/ChartExample.java
Created May 6, 2014 18:56
Show Gist options
  • Save paulodiogo/f4a191964665f7966849 to your computer and use it in GitHub Desktop.
Save paulodiogo/f4a191964665f7966849 to your computer and use it in GitHub Desktop.
package com.example.testchart;
import java.util.*;
import java.io.*;
import java.text.DateFormat;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.*;
import android.widget.*;
import android.content.*;
import android.content.res.AssetManager;
import android.graphics.Color;
import android.graphics.Paint.Align;
import org.achartengine.*;
import org.achartengine.chart.*;
import org.achartengine.model.*;
import org.achartengine.renderer.*;
import org.achartengine.tools.*;
import org.json.*;
public class ChartExample extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
final TimeChart lc = new TimeChart(getDataset(), getRenderer());
final GraphicalView graph = new GraphicalView(getApplicationContext(),lc);
ll.addView(graph);
lc.setXAxisSmart(true);
lc.setDateFormat("yy-MM-dd");
setContentView(ll);
}
void log(String msg) {
Log.d("graph",msg);
}
public void onClickMe(View v) {
Intent chart = ChartFactory.getLineChartIntent(getApplicationContext(), getDataset(), getRenderer());
startActivity(chart);
}
private XYMultipleSeriesRenderer getRenderer() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.BLACK);
renderer.setXLabelsColor(Color.YELLOW);
renderer.setShowGrid(true);
renderer.setYLabelsAlign(Align.LEFT);
renderer.setChartTitle("Closure Profile");
renderer.setXTitle("Date");
renderer.setYTitle("Closure");
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(Color.WHITE);
renderer.addSeriesRenderer(r);
renderer.setZoomButtonsVisible(true);
return renderer;
}
private XYMultipleSeriesDataset getDataset() {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
TimeSeries series = new TimeSeries("Demo");
AssetManager am = getAssets();
try {
InputStream is = am.open("closure.json");
String json = readStream(is);
is.close();
JSONObject obj = (JSONObject)new JSONTokener(json).nextValue();
JSONArray arr = obj.getJSONArray("data");
double closure = 0.0;
for (int i = 0; i < arr.length(); i++) {
JSONArray point = arr.getJSONArray(i);
Date d = new Date(point.getLong(0));
double val = point.getDouble(1);
closure += val;
series.add(d,closure);
}
} catch (Exception e) {
Log.d("graph",e.getMessage());
}
dataset.addSeries(series);
return dataset;
}
private String readStream(InputStream is) {
ByteArrayOutputStream output = new ByteArrayOutputStream(4096);
byte[] buffer = new byte[4096];
int n = 0;
try {
while (-1 != (n = is.read(buffer))) {
output.write(buffer, 0, n);
}
} catch (IOException e) {
Log.d("graph",e.getMessage());
return null;
}
return output.toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment