package com.examples; import net.droidsolutions.droidcharts.awt.Rectangle2D; import net.droidsolutions.droidcharts.core.ChartFactory; import net.droidsolutions.droidcharts.core.JFreeChart; import net.droidsolutions.droidcharts.core.axis.NumberAxis; import net.droidsolutions.droidcharts.core.data.XYDataset; import net.droidsolutions.droidcharts.core.plot.PlotOrientation; import net.droidsolutions.droidcharts.core.plot.XYPlot; import net.droidsolutions.droidcharts.core.renderer.xy.XYLineAndShapeRenderer; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.view.View; public class XYLineChartView extends View { private final String mChartTitle; private final String mXLabel; private final String mYLabel; private final XYDataset mDataSet; /** The view bounds. */ private final Rect mRect = new Rect(); /** * Creates a new graphical view. * * @param context * the context * @param chart * the chart to be drawn */ public XYLineChartView(Context context, String chartTitle, String xLabel, String yLabel, XYDataset dataSet) { super(context); mChartTitle = chartTitle; mXLabel = xLabel; mYLabel = yLabel; mDataSet = dataSet; } public XYLineChartView(Context context) { this(context, "A Title", "An X label", "A Y Label", null); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.getClipBounds(mRect); // Get the passed in data set final XYDataset dataset = mDataSet; // Create the Chart final JFreeChart chart = createChart(dataset); // Draw it chart.draw(canvas, new Rectangle2D.Double(0, 0, mRect.width(), mRect.height())); } /** * Creates a chart. * * @param dataset * the data for the chart. * * @return a chart. */ private JFreeChart createChart(final XYDataset dataset) { // create the chart... // (chart title, x-axis label, y-axis label, // dataset,orientation,orientation ,url) final JFreeChart chart = ChartFactory.createXYLineChart(mChartTitle, mXLabel, mYLabel, dataset, PlotOrientation.VERTICAL, true, true, false); Paint white = new Paint(Paint.ANTI_ALIAS_FLAG); white.setColor(Color.WHITE); Paint dkGray = new Paint(Paint.ANTI_ALIAS_FLAG); dkGray.setColor(Color.DKGRAY); Paint lightGray = new Paint(Paint.ANTI_ALIAS_FLAG); lightGray.setColor(Color.LTGRAY); lightGray.setStrokeWidth(10); // Set Chart Background color chart.setBackgroundPaint(white); final XYPlot plot = chart.getXYPlot(); plot.setBackgroundPaint(dkGray); plot.setDomainGridlinePaint(lightGray); plot.setRangeGridlinePaint(lightGray); final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); renderer.setSeriesLinesVisible(0, true); plot.setRenderer(renderer); // change the auto tick unit selection to integer units only... final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); // final NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis(); // domainAxis.set(CategoryLabelPositions.STANDARD); return chart; } }