From 5e165186146a2c0230b528fb2a53e97e92d3b8a3 Mon Sep 17 00:00:00 2001 From: Philipp Jahoda Date: Wed, 28 May 2014 00:48:13 +0200 Subject: [PATCH] Multilines can now be filled, BarChart supports values. --- .../github/mikephil/charting/BarChart.java | 40 ++++---- .../mikephil/charting/BarLineChartBase.java | 6 +- .../com/github/mikephil/charting/Chart.java | 69 +++++++++++--- .../github/mikephil/charting/ChartData.java | 2 +- .../com/github/mikephil/charting/DataSet.java | 2 +- .../github/mikephil/charting/LineChart.java | 88 ++++++++---------- performance.xlsx | Bin 0 -> 42313 bytes 7 files changed, 122 insertions(+), 85 deletions(-) create mode 100644 performance.xlsx diff --git a/MPChartLib/src/com/github/mikephil/charting/BarChart.java b/MPChartLib/src/com/github/mikephil/charting/BarChart.java index dd93a5dca..8ed19a5c0 100644 --- a/MPChartLib/src/com/github/mikephil/charting/BarChart.java +++ b/MPChartLib/src/com/github/mikephil/charting/BarChart.java @@ -27,7 +27,7 @@ public class BarChart extends BarLineChartBase { private boolean m3DEnabled = true; /** flag that enables or disables the highlighting arrow */ - private boolean mDrawHighlightArrow = true; + private boolean mDrawHighlightArrow = false; public BarChart(Context context) { super(context); @@ -245,7 +245,7 @@ protected void drawData() { ArrayList series = dataSet.getYVals(); // do the drawing - for (int j = 0; j < dataSet.getYValCount(); j++) { + for (int j = 0; j < dataSet.getSeriesCount(); j++) { Paint paint = mDrawPaints[j % mDrawPaints.length]; @@ -284,26 +284,34 @@ protected void drawValues() { // if values are drawn if (mDrawYValues && mData.getYValCount() < mMaxVisibleCount * mScaleX) { - float[] valuePoints = new float[mData.getYValCount() * 2]; + ArrayList dataSets = mData.getDataSets(); - for (int i = 0; i < valuePoints.length; i += 2) { - valuePoints[i] = i / 2 + 0.5f; // add 0.5f too keep the values - // centered on top of the bars - valuePoints[i + 1] = getYValue(i / 2); - } + for (int i = 0; i < mData.getDataSetCount(); i++) { + + DataSet dataSet = dataSets.get(i); + ArrayList series = dataSet.getYVals(); + + float[] valuePoints = generateTransformedValues(series, 0.5f); - transformPointArray(valuePoints); + for (int j = 0; j < valuePoints.length; j += 2) { - for (int i = 0; i < valuePoints.length; i += 2) { + if (isOffContentRight(valuePoints[j])) + break; - if (mDrawUnitInChart) { + if (isOffContentLeft(valuePoints[j])) + continue; - mDrawCanvas.drawText(mFormatValue.format(getYValue(i / 2)) + mUnit, - valuePoints[i], valuePoints[i + 1] - 12, mValuePaint); - } else { + float val = series.get(j / 2).getVal(); - mDrawCanvas.drawText(mFormatValue.format(getYValue(i / 2)), valuePoints[i], - valuePoints[i + 1] - 12, mValuePaint); + if (mDrawUnitInChart) { + + mDrawCanvas.drawText(mFormatValue.format(val) + mUnit, + valuePoints[j], valuePoints[j + 1] - 12, mValuePaint); + } else { + + mDrawCanvas.drawText(mFormatValue.format(val), valuePoints[j], + valuePoints[j + 1] - 12, mValuePaint); + } } } } diff --git a/MPChartLib/src/com/github/mikephil/charting/BarLineChartBase.java b/MPChartLib/src/com/github/mikephil/charting/BarLineChartBase.java index 3e56e83ec..68dd51f06 100644 --- a/MPChartLib/src/com/github/mikephil/charting/BarLineChartBase.java +++ b/MPChartLib/src/com/github/mikephil/charting/BarLineChartBase.java @@ -506,7 +506,7 @@ protected void drawYLegend() { * @param v * @return */ - protected boolean isOffCanvasRight(float p) { + protected boolean isOffContentRight(float p) { if (p > mContentRect.right) return true; else @@ -520,7 +520,7 @@ protected boolean isOffCanvasRight(float p) { * @param v * @return */ - protected boolean isOffCanvasLeft(float p) { + protected boolean isOffContentLeft(float p) { if (p < mContentRect.left) return true; else @@ -927,7 +927,7 @@ public Highlight getIndexByTouchPoint(float x, float y) { } /** - * returns the index of the closest value + * returns the index DataSet that contains the closest value * * @param valsAtIndex * @return diff --git a/MPChartLib/src/com/github/mikephil/charting/Chart.java b/MPChartLib/src/com/github/mikephil/charting/Chart.java index 3cb10fe4e..da1dae258 100644 --- a/MPChartLib/src/com/github/mikephil/charting/Chart.java +++ b/MPChartLib/src/com/github/mikephil/charting/Chart.java @@ -208,7 +208,7 @@ protected void init() { } /** - * sets the data for the chart + * Sets a new ChartData object for the chart. * * @param data */ @@ -228,6 +228,32 @@ public void setData(ChartData data) { prepare(); } + /** + * Sets primitive data for the chart. Internally, this is converted into a + * ChartData object with one DataSet (type 0). If you have more specific + * requirements for your data, use the setData(ChartData data) method and + * create your own ChartData object with as many DataSets as you like. + * + * @param xVals + * @param yVals + */ + public void setData(ArrayList xVals, ArrayList yVals) { + + ArrayList series = new ArrayList(); + + for (int i = 0; i < yVals.size(); i++) { + series.add(new Series(yVals.get(i), i)); + } + + DataSet set = new DataSet(series, 0); + ArrayList dataSets = new ArrayList(); + dataSets.add(set); + + ChartData data = new ChartData(xVals, dataSets); + + setData(data); + } + /** * Prepares all the paint objects that are used for drawing the lines, bars * or pie-slices. The number of paint objects used depends on the number of @@ -322,6 +348,29 @@ protected void prepareContentRect() { - mOffsetBottom); } + /** + * transforms an arraylist of Series into a float array containing the x and + * y values transformed with all matrices + * + * @param series + * @param xoffset offset the chart values should have on the x-axis (0.5f) + * to center for barchart + * @return + */ + protected float[] generateTransformedValues(ArrayList series, float xOffset) { + + float[] valuePoints = new float[series.size() * 2]; + + for (int j = 0; j < valuePoints.length; j += 2) { + valuePoints[j] = series.get(j / 2).getXIndex() + xOffset; + valuePoints[j + 1] = series.get(j / 2).getVal(); + } + + transformPointArray(valuePoints); + + return valuePoints; + } + /** * transform a path with all the given matrices VERY IMPORTANT: keep order * to value-touch-offset @@ -793,7 +842,7 @@ public float getAverage() { */ public float getAverage(int type) { return mData.getDataSetByType(type).getYValueSum() - / mData.getDataSetByType(type).getYValCount(); + / mData.getDataSetByType(type).getSeriesCount(); } /** @@ -963,12 +1012,6 @@ public float getMarkerPosY() { return mMarkerPosY; } - /** paint for the lines of the linechart */ - public static final int PAINT_LINE = 1; - - /** paint for the filled surface / area of the linechart */ - public static final int PAINT_FILLED = 2; - /** paint for the grid lines (only line and barchart) */ public static final int PAINT_GRID = 3; @@ -990,9 +1033,6 @@ public float getMarkerPosY() { /** paint for the value text */ public static final int PAINT_VALUES = 8; - /** paint for the outer circle (linechart) */ - public static final int PAINT_CIRCLES_OUTER = 9; - /** paint for the inner circle (linechart) */ public static final int PAINT_CIRCLES_INNER = 10; @@ -1016,10 +1056,11 @@ public float getMarkerPosY() { /** * set a new paint object for the specified parameter in the chart e.g. - * Chart.PAINT_LINE + * Chart.PAINT_VALUES * - * @param p --> Chart.PAINT_LINE, Chart.PAINT_GRID, Chart.PAINT_VALUES, ... - * @param which + * @param p the new paint object + * @param which Chart.PAINT_VALUES, Chart.PAINT_GRID, Chart.PAINT_VALUES, + * ... */ public void setPaint(Paint p, int which) { diff --git a/MPChartLib/src/com/github/mikephil/charting/ChartData.java b/MPChartLib/src/com/github/mikephil/charting/ChartData.java index b7e72ae74..fc104cc54 100644 --- a/MPChartLib/src/com/github/mikephil/charting/ChartData.java +++ b/MPChartLib/src/com/github/mikephil/charting/ChartData.java @@ -215,7 +215,7 @@ public int getXValCount() { public int getYValCount() { int count = 0; for (int i = 0; i < mDataSets.size(); i++) { - count += mDataSets.get(i).getYValCount(); + count += mDataSets.get(i).getSeriesCount(); } return count; diff --git a/MPChartLib/src/com/github/mikephil/charting/DataSet.java b/MPChartLib/src/com/github/mikephil/charting/DataSet.java index ec626bcfb..f8dd6cb9b 100644 --- a/MPChartLib/src/com/github/mikephil/charting/DataSet.java +++ b/MPChartLib/src/com/github/mikephil/charting/DataSet.java @@ -77,7 +77,7 @@ private void calcYValueSum() { * * @return */ - public int getYValCount() { + public int getSeriesCount() { return mYVals.size(); } diff --git a/MPChartLib/src/com/github/mikephil/charting/LineChart.java b/MPChartLib/src/com/github/mikephil/charting/LineChart.java index 79969fed5..5faff1503 100644 --- a/MPChartLib/src/com/github/mikephil/charting/LineChart.java +++ b/MPChartLib/src/com/github/mikephil/charting/LineChart.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import android.content.Context; +import android.graphics.Canvas.VertexMode; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; @@ -94,7 +95,7 @@ protected void drawHighlights() { DataSet set = getDataSetByIndex(mIndicesToHightlight[i].getDataSetIndex()); // check outofbounds - if (xIndex < set.getYValCount() && xIndex >= 0) { + if (xIndex < set.getSeriesCount() && xIndex >= 0) { float[] pts = new float[] { xIndex, mYChartMax, xIndex, mYChartMin, 0, @@ -122,50 +123,54 @@ protected void drawData() { DataSet dataSet = dataSets.get(i); ArrayList series = dataSet.getYVals(); - float[] valuePoints = new float[series.size() * 2]; + float[] valuePoints = generateTransformedValues(series, 0f); - for (int j = 0; j < valuePoints.length; j += 2) { - valuePoints[j] = series.get(j / 2).getXIndex(); - valuePoints[j + 1] = series.get(j / 2).getVal(); - } - - transformPointArray(valuePoints); + Paint paint = mDrawPaints[i % mDrawPaints.length]; for (int j = 0; j < valuePoints.length - 2; j += 2) { - if (isOffCanvasRight(valuePoints[j])) + if (isOffContentRight(valuePoints[j])) break; // make sure the lines don't do shitty things outside bounds - if (j != 0 && isOffCanvasLeft(valuePoints[j - 1])) + if (j != 0 && isOffContentLeft(valuePoints[j - 1])) continue; mDrawCanvas.drawLine(valuePoints[j], valuePoints[j + 1], valuePoints[j + 2], - valuePoints[j + 3], - mDrawPaints[i % mDrawPaints.length]); + valuePoints[j + 3], paint); } - } - // if data is drawn filled - if (mDrawFilled) { - Path filled = new Path(); - filled.moveTo(0, getYValue(0)); + // if drawing filled is enabled + if (mDrawFilled) { + // mDrawCanvas.drawVertices(VertexMode.TRIANGLE_STRIP, + // valuePoints.length, valuePoints, 0, + // null, 0, null, 0, null, 0, 0, paint); + + // filled is drawn with less alpha + paint.setAlpha(85); - // create a new path - for (int x = 1; x < mData.getYValCount(); x++) { + Path filled = new Path(); + filled.moveTo(0, series.get(0).getVal()); - filled.lineTo(x, getYValue(x)); - } + // create a new path + for (int x = 1; x < series.size(); x++) { - // close up - filled.lineTo(mData.getXValCount() - 1, mYChartMin); - filled.lineTo(0f, mYChartMin); - filled.close(); + filled.lineTo(x, series.get(x).getVal()); + } + + // close up + filled.lineTo(series.size() - 1, mYChartMin); + filled.lineTo(0f, mYChartMin); + filled.close(); - transformPath(filled); + transformPath(filled); - mDrawCanvas.drawPath(filled, mFilledPaint); + mDrawCanvas.drawPath(filled, paint); + + // restore alpha + paint.setAlpha(255); + } } } @@ -188,21 +193,14 @@ protected void drawValues() { DataSet dataSet = dataSets.get(i); ArrayList series = dataSet.getYVals(); - float[] positions = new float[dataSet.getYValCount() * 2]; - - for (int j = 0; j < positions.length; j += 2) { - positions[j] = series.get(j / 2).getXIndex(); - positions[j + 1] = series.get(j / 2).getVal(); - } - - transformPointArray(positions); + float[] positions = generateTransformedValues(series, 0f); for (int j = 0; j < positions.length; j += 2) { - if (isOffCanvasRight(positions[j])) + if (isOffContentRight(positions[j])) break; - if (isOffCanvasLeft(positions[j])) + if (isOffContentLeft(positions[j])) continue; float val = series.get(j / 2).getVal(); @@ -236,23 +234,16 @@ protected void drawAdditional() { DataSet dataSet = dataSets.get(i); ArrayList series = dataSet.getYVals(); - float[] positions = new float[dataSet.getYValCount() * 2]; - - for (int j = 0; j < positions.length; j += 2) { - positions[j] = series.get(j / 2).getXIndex(); - positions[j + 1] = series.get(j / 2).getVal(); - } - - transformPointArray(positions); + float[] positions = generateTransformedValues(series, 0f); for (int j = 0; j < positions.length; j += 2) { - if (isOffCanvasRight(positions[j])) + if (isOffContentRight(positions[j])) break; // make sure the circles don't do shitty things outside // bounds - if (isOffCanvasLeft(positions[j])) + if (isOffContentLeft(positions[j])) continue; mDrawCanvas.drawCircle(positions[j], positions[j + 1], mCircleSize, @@ -381,9 +372,6 @@ public void setPaint(Paint p, int which) { super.setPaint(p, which); switch (which) { - case PAINT_FILLED: - mFilledPaint = p; - break; case PAINT_CIRCLES_INNER: mCirclePaintInner = p; break; diff --git a/performance.xlsx b/performance.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..041d4fea4e748ac1f5efd0b4ca5f7707c6c2f3ca GIT binary patch literal 42313 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 L0+UbPA`lM%4?J+K literal 0 HcmV?d00001