• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.xxmassdeveloper.mpchartexample.fragments;
2 
3 import android.content.Context;
4 import android.graphics.Color;
5 import android.graphics.Typeface;
6 import android.os.Bundle;
7 import androidx.annotation.NonNull;
8 import androidx.fragment.app.Fragment;
9 import android.view.LayoutInflater;
10 import android.view.View;
11 import android.view.ViewGroup;
12 
13 import com.github.mikephil.charting.charts.ScatterChart;
14 import com.github.mikephil.charting.data.BarData;
15 import com.github.mikephil.charting.data.BarDataSet;
16 import com.github.mikephil.charting.data.BarEntry;
17 import com.github.mikephil.charting.data.Entry;
18 import com.github.mikephil.charting.data.LineData;
19 import com.github.mikephil.charting.data.LineDataSet;
20 import com.github.mikephil.charting.data.PieData;
21 import com.github.mikephil.charting.data.PieDataSet;
22 import com.github.mikephil.charting.data.PieEntry;
23 import com.github.mikephil.charting.data.ScatterData;
24 import com.github.mikephil.charting.data.ScatterDataSet;
25 import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;
26 import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
27 import com.github.mikephil.charting.interfaces.datasets.IScatterDataSet;
28 import com.github.mikephil.charting.utils.ColorTemplate;
29 import com.github.mikephil.charting.utils.FileUtils;
30 
31 import java.util.ArrayList;
32 
33 @SuppressWarnings({"SameParameterValue", "WeakerAccess"})
34 public abstract class SimpleFragment extends Fragment {
35 
36     private Typeface tf;
37     protected Context context;
38 
39     @Override
onAttach(Context context)40     public void onAttach(Context context) {
41         super.onAttach(context);
42         this.context = context;
43     }
44 
SimpleFragment()45     public SimpleFragment() {
46 
47     }
48 
49     @Override
onCreateView(@onNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)50     public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
51         tf = Typeface.createFromAsset(context.getAssets(), "OpenSans-Regular.ttf");
52         return super.onCreateView(inflater, container, savedInstanceState);
53     }
54 
generateBarData(int dataSets, float range, int count)55     protected BarData generateBarData(int dataSets, float range, int count) {
56 
57         ArrayList<IBarDataSet> sets = new ArrayList<>();
58 
59         for(int i = 0; i < dataSets; i++) {
60 
61             ArrayList<BarEntry> entries = new ArrayList<>();
62 
63             for(int j = 0; j < count; j++) {
64                 entries.add(new BarEntry(j, (float) (Math.random() * range) + range / 4));
65             }
66 
67             BarDataSet ds = new BarDataSet(entries, getLabel(i));
68             ds.setColors(ColorTemplate.VORDIPLOM_COLORS);
69             sets.add(ds);
70         }
71 
72         BarData d = new BarData(sets);
73         d.setValueTypeface(tf);
74         return d;
75     }
76 
generateScatterData(int dataSets, float range, int count)77     protected ScatterData generateScatterData(int dataSets, float range, int count) {
78 
79         ArrayList<IScatterDataSet> sets = new ArrayList<>();
80 
81         ScatterChart.ScatterShape[] shapes = ScatterChart.ScatterShape.getAllDefaultShapes();
82 
83         for(int i = 0; i < dataSets; i++) {
84 
85             ArrayList<Entry> entries = new ArrayList<>();
86 
87             for(int j = 0; j < count; j++) {
88                 entries.add(new Entry(j, (float) (Math.random() * range) + range / 4));
89             }
90 
91             ScatterDataSet ds = new ScatterDataSet(entries, getLabel(i));
92             ds.setScatterShapeSize(12f);
93             ds.setScatterShape(shapes[i % shapes.length]);
94             ds.setColors(ColorTemplate.COLORFUL_COLORS);
95             ds.setScatterShapeSize(9f);
96             sets.add(ds);
97         }
98 
99         ScatterData d = new ScatterData(sets);
100         d.setValueTypeface(tf);
101         return d;
102     }
103 
104     /**
105      * generates less data (1 DataSet, 4 values)
106      * @return PieData
107      */
generatePieData()108     protected PieData generatePieData() {
109 
110         int count = 4;
111 
112         ArrayList<PieEntry> entries1 = new ArrayList<>();
113 
114         for(int i = 0; i < count; i++) {
115             entries1.add(new PieEntry((float) ((Math.random() * 60) + 40), "Quarter " + (i+1)));
116         }
117 
118         PieDataSet ds1 = new PieDataSet(entries1, "Quarterly Revenues 2015");
119         ds1.setColors(ColorTemplate.VORDIPLOM_COLORS);
120         ds1.setSliceSpace(2f);
121         ds1.setValueTextColor(Color.WHITE);
122         ds1.setValueTextSize(12f);
123 
124         PieData d = new PieData(ds1);
125         d.setValueTypeface(tf);
126 
127         return d;
128     }
129 
generateLineData()130     protected LineData generateLineData() {
131 
132         ArrayList<ILineDataSet> sets = new ArrayList<>();
133         LineDataSet ds1 = new LineDataSet(FileUtils.loadEntriesFromAssets(context.getAssets(), "sine.txt"), "Sine function");
134         LineDataSet ds2 = new LineDataSet(FileUtils.loadEntriesFromAssets(context.getAssets(), "cosine.txt"), "Cosine function");
135 
136         ds1.setLineWidth(2f);
137         ds2.setLineWidth(2f);
138 
139         ds1.setDrawCircles(false);
140         ds2.setDrawCircles(false);
141 
142         ds1.setColor(ColorTemplate.VORDIPLOM_COLORS[0]);
143         ds2.setColor(ColorTemplate.VORDIPLOM_COLORS[1]);
144 
145         // load DataSets from files in assets folder
146         sets.add(ds1);
147         sets.add(ds2);
148 
149         LineData d = new LineData(sets);
150         d.setValueTypeface(tf);
151         return d;
152     }
153 
getComplexity()154     protected LineData getComplexity() {
155 
156         ArrayList<ILineDataSet> sets = new ArrayList<>();
157 
158         LineDataSet ds1 = new LineDataSet(FileUtils.loadEntriesFromAssets(context.getAssets(), "n.txt"), "O(n)");
159         LineDataSet ds2 = new LineDataSet(FileUtils.loadEntriesFromAssets(context.getAssets(), "nlogn.txt"), "O(nlogn)");
160         LineDataSet ds3 = new LineDataSet(FileUtils.loadEntriesFromAssets(context.getAssets(), "square.txt"), "O(n\u00B2)");
161         LineDataSet ds4 = new LineDataSet(FileUtils.loadEntriesFromAssets(context.getAssets(), "three.txt"), "O(n\u00B3)");
162 
163         ds1.setColor(ColorTemplate.VORDIPLOM_COLORS[0]);
164         ds2.setColor(ColorTemplate.VORDIPLOM_COLORS[1]);
165         ds3.setColor(ColorTemplate.VORDIPLOM_COLORS[2]);
166         ds4.setColor(ColorTemplate.VORDIPLOM_COLORS[3]);
167 
168         ds1.setCircleColor(ColorTemplate.VORDIPLOM_COLORS[0]);
169         ds2.setCircleColor(ColorTemplate.VORDIPLOM_COLORS[1]);
170         ds3.setCircleColor(ColorTemplate.VORDIPLOM_COLORS[2]);
171         ds4.setCircleColor(ColorTemplate.VORDIPLOM_COLORS[3]);
172 
173         ds1.setLineWidth(2.5f);
174         ds1.setCircleRadius(3f);
175         ds2.setLineWidth(2.5f);
176         ds2.setCircleRadius(3f);
177         ds3.setLineWidth(2.5f);
178         ds3.setCircleRadius(3f);
179         ds4.setLineWidth(2.5f);
180         ds4.setCircleRadius(3f);
181 
182 
183         // load DataSets from files in assets folder
184         sets.add(ds1);
185         sets.add(ds2);
186         sets.add(ds3);
187         sets.add(ds4);
188 
189         LineData d = new LineData(sets);
190         d.setValueTypeface(tf);
191         return d;
192     }
193 
194     private final String[] mLabels = new String[] { "Company A", "Company B", "Company C", "Company D", "Company E", "Company F" };
195 
getLabel(int i)196     private String getLabel(int i) {
197         return mLabels[i];
198     }
199 }
200