• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 package com.github.mikephil.charting.data;
3 
4 import com.github.mikephil.charting.charts.ScatterChart;
5 import com.github.mikephil.charting.interfaces.datasets.IScatterDataSet;
6 import com.github.mikephil.charting.renderer.scatter.ChevronDownShapeRenderer;
7 import com.github.mikephil.charting.renderer.scatter.ChevronUpShapeRenderer;
8 import com.github.mikephil.charting.renderer.scatter.CircleShapeRenderer;
9 import com.github.mikephil.charting.renderer.scatter.CrossShapeRenderer;
10 import com.github.mikephil.charting.renderer.scatter.IShapeRenderer;
11 import com.github.mikephil.charting.renderer.scatter.SquareShapeRenderer;
12 import com.github.mikephil.charting.renderer.scatter.TriangleShapeRenderer;
13 import com.github.mikephil.charting.renderer.scatter.XShapeRenderer;
14 import com.github.mikephil.charting.utils.ColorTemplate;
15 
16 import java.util.ArrayList;
17 import java.util.List;
18 
19 public class ScatterDataSet extends LineScatterCandleRadarDataSet<Entry> implements IScatterDataSet {
20 
21     /**
22      * the size the scattershape will have, in density pixels
23      */
24     private float mShapeSize = 15f;
25 
26     /**
27      * Renderer responsible for rendering this DataSet, default: square
28      */
29     protected IShapeRenderer mShapeRenderer = new SquareShapeRenderer();
30 
31     /**
32      * The radius of the hole in the shape (applies to Square, Circle and Triangle)
33      * - default: 0.0
34      */
35     private float mScatterShapeHoleRadius = 0f;
36 
37     /**
38      * Color for the hole in the shape.
39      * Setting to `ColorTemplate.COLOR_NONE` will behave as transparent.
40      * - default: ColorTemplate.COLOR_NONE
41      */
42     private int mScatterShapeHoleColor = ColorTemplate.COLOR_NONE;
43 
ScatterDataSet(List<Entry> yVals, String label)44     public ScatterDataSet(List<Entry> yVals, String label) {
45         super(yVals, label);
46     }
47 
48     @Override
copy()49     public DataSet<Entry> copy() {
50         List<Entry> entries = new ArrayList<Entry>();
51         for (int i = 0; i < mEntries.size(); i++) {
52             entries.add(mEntries.get(i).copy());
53         }
54         ScatterDataSet copied = new ScatterDataSet(entries, getLabel());
55         copy(copied);
56         return copied;
57     }
58 
copy(ScatterDataSet scatterDataSet)59     protected void copy(ScatterDataSet scatterDataSet) {
60         super.copy(scatterDataSet);
61         scatterDataSet.mShapeSize = mShapeSize;
62         scatterDataSet.mShapeRenderer = mShapeRenderer;
63         scatterDataSet.mScatterShapeHoleRadius = mScatterShapeHoleRadius;
64         scatterDataSet.mScatterShapeHoleColor = mScatterShapeHoleColor;
65     }
66 
67     /**
68      * Sets the size in density pixels the drawn scattershape will have. This
69      * only applies for non custom shapes.
70      *
71      * @param size
72      */
setScatterShapeSize(float size)73     public void setScatterShapeSize(float size) {
74         mShapeSize = size;
75     }
76 
77     @Override
getScatterShapeSize()78     public float getScatterShapeSize() {
79         return mShapeSize;
80     }
81 
82     /**
83      * Sets the ScatterShape this DataSet should be drawn with. This will search for an available IShapeRenderer and set this
84      * renderer for the DataSet.
85      *
86      * @param shape
87      */
setScatterShape(ScatterChart.ScatterShape shape)88     public void setScatterShape(ScatterChart.ScatterShape shape) {
89         mShapeRenderer = getRendererForShape(shape);
90     }
91 
92     /**
93      * Sets a new IShapeRenderer responsible for drawing this DataSet.
94      * This can also be used to set a custom IShapeRenderer aside from the default ones.
95      *
96      * @param shapeRenderer
97      */
setShapeRenderer(IShapeRenderer shapeRenderer)98     public void setShapeRenderer(IShapeRenderer shapeRenderer) {
99         mShapeRenderer = shapeRenderer;
100     }
101 
102     @Override
getShapeRenderer()103     public IShapeRenderer getShapeRenderer() {
104         return mShapeRenderer;
105     }
106 
107     /**
108      * Sets the radius of the hole in the shape (applies to Square, Circle and Triangle)
109      * Set this to <= 0 to remove holes.
110      *
111      * @param holeRadius
112      */
setScatterShapeHoleRadius(float holeRadius)113     public void setScatterShapeHoleRadius(float holeRadius) {
114         mScatterShapeHoleRadius = holeRadius;
115     }
116 
117     @Override
getScatterShapeHoleRadius()118     public float getScatterShapeHoleRadius() {
119         return mScatterShapeHoleRadius;
120     }
121 
122     /**
123      * Sets the color for the hole in the shape.
124      *
125      * @param holeColor
126      */
setScatterShapeHoleColor(int holeColor)127     public void setScatterShapeHoleColor(int holeColor) {
128         mScatterShapeHoleColor = holeColor;
129     }
130 
131     @Override
getScatterShapeHoleColor()132     public int getScatterShapeHoleColor() {
133         return mScatterShapeHoleColor;
134     }
135 
getRendererForShape(ScatterChart.ScatterShape shape)136     public static IShapeRenderer getRendererForShape(ScatterChart.ScatterShape shape) {
137 
138         switch (shape) {
139             case SQUARE:
140                 return new SquareShapeRenderer();
141             case CIRCLE:
142                 return new CircleShapeRenderer();
143             case TRIANGLE:
144                 return new TriangleShapeRenderer();
145             case CROSS:
146                 return new CrossShapeRenderer();
147             case X:
148                 return new XShapeRenderer();
149             case CHEVRON_UP:
150                 return new ChevronUpShapeRenderer();
151             case CHEVRON_DOWN:
152                 return new ChevronDownShapeRenderer();
153         }
154 
155         return null;
156     }
157 }
158