| |
| package com.xxmassdeveloper.mpchartexample; |
| |
| import android.graphics.Color; |
| import android.graphics.Paint; |
| import android.os.Bundle; |
| import android.view.Menu; |
| import android.view.MenuItem; |
| import android.view.WindowManager; |
| |
| import com.github.mikephil.charting.charts.CombinedChart; |
| import com.github.mikephil.charting.charts.CombinedChart.DrawOrder; |
| import com.github.mikephil.charting.components.AxisBase; |
| import com.github.mikephil.charting.components.Legend; |
| import com.github.mikephil.charting.components.XAxis; |
| import com.github.mikephil.charting.components.XAxis.XAxisPosition; |
| import com.github.mikephil.charting.components.YAxis; |
| import com.github.mikephil.charting.data.BarData; |
| import com.github.mikephil.charting.data.BarDataSet; |
| import com.github.mikephil.charting.data.BarEntry; |
| import com.github.mikephil.charting.data.BubbleData; |
| import com.github.mikephil.charting.data.BubbleDataSet; |
| import com.github.mikephil.charting.data.BubbleEntry; |
| import com.github.mikephil.charting.data.CandleData; |
| import com.github.mikephil.charting.data.CandleDataSet; |
| import com.github.mikephil.charting.data.CandleEntry; |
| import com.github.mikephil.charting.data.CombinedData; |
| import com.github.mikephil.charting.data.Entry; |
| import com.github.mikephil.charting.data.LineData; |
| import com.github.mikephil.charting.data.LineDataSet; |
| import com.github.mikephil.charting.data.ScatterData; |
| import com.github.mikephil.charting.data.ScatterDataSet; |
| import com.github.mikephil.charting.formatter.AxisValueFormatter; |
| import com.github.mikephil.charting.interfaces.datasets.IDataSet; |
| import com.github.mikephil.charting.utils.ColorTemplate; |
| import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase; |
| |
| import java.util.ArrayList; |
| |
| public class CombinedChartActivity extends DemoBase { |
| |
| private CombinedChart mChart; |
| private final int itemcount = 12; |
| |
| @Override |
| protected void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, |
| WindowManager.LayoutParams.FLAG_FULLSCREEN); |
| setContentView(R.layout.activity_combined); |
| |
| mChart = (CombinedChart) findViewById(R.id.chart1); |
| mChart.setDescription(""); |
| mChart.setBackgroundColor(Color.WHITE); |
| mChart.setDrawGridBackground(false); |
| mChart.setDrawBarShadow(false); |
| |
| // draw bars behind lines |
| mChart.setDrawOrder(new DrawOrder[]{ |
| DrawOrder.BAR, DrawOrder.BUBBLE, DrawOrder.CANDLE, DrawOrder.LINE, DrawOrder.SCATTER |
| }); |
| |
| Legend l = mChart.getLegend(); |
| l.setWordWrapEnabled(true); |
| l.setPosition(Legend.LegendPosition.BELOW_CHART_CENTER); |
| |
| YAxis rightAxis = mChart.getAxisRight(); |
| rightAxis.setDrawGridLines(false); |
| rightAxis.setAxisMinValue(0f); // this replaces setStartAtZero(true) |
| |
| YAxis leftAxis = mChart.getAxisLeft(); |
| leftAxis.setDrawGridLines(false); |
| leftAxis.setAxisMinValue(0f); // this replaces setStartAtZero(true) |
| |
| XAxis xAxis = mChart.getXAxis(); |
| xAxis.setPosition(XAxisPosition.BOTH_SIDED); |
| xAxis.setAxisMinValue(0f); |
| xAxis.setGranularity(1f); |
| xAxis.setValueFormatter(new AxisValueFormatter() { |
| @Override |
| public String getFormattedValue(float value, AxisBase axis) { |
| return mMonths[(int) value % mMonths.length]; |
| } |
| |
| @Override |
| public int getDecimalDigits() { |
| return 0; |
| } |
| }); |
| |
| CombinedData data = new CombinedData(); |
| |
| data.setData(generateLineData()); |
| data.setData(generateBarData()); |
| data.setData(generateBubbleData()); |
| data.setData(generateScatterData()); |
| data.setData(generateCandleData()); |
| data.setValueTypeface(mTfLight); |
| |
| xAxis.setAxisMaxValue(data.getXMax() + 0.25f); |
| |
| mChart.setData(data); |
| mChart.invalidate(); |
| } |
| |
| private LineData generateLineData() { |
| |
| LineData d = new LineData(); |
| |
| ArrayList<Entry> entries = new ArrayList<Entry>(); |
| |
| for (int index = 0; index < itemcount; index++) |
| entries.add(new Entry(index + 0.5f, getRandom(15, 5))); |
| |
| LineDataSet set = new LineDataSet(entries, "Line DataSet"); |
| set.setColor(Color.rgb(240, 238, 70)); |
| set.setLineWidth(2.5f); |
| set.setCircleColor(Color.rgb(240, 238, 70)); |
| set.setCircleRadius(5f); |
| set.setFillColor(Color.rgb(240, 238, 70)); |
| set.setMode(LineDataSet.Mode.CUBIC_BEZIER); |
| set.setDrawValues(true); |
| set.setValueTextSize(10f); |
| set.setValueTextColor(Color.rgb(240, 238, 70)); |
| |
| set.setAxisDependency(YAxis.AxisDependency.LEFT); |
| |
| d.addDataSet(set); |
| |
| return d; |
| } |
| |
| private BarData generateBarData() { |
| |
| BarData d = new BarData(); |
| d.setBarWidth(0.9f); |
| |
| ArrayList<BarEntry> entries = new ArrayList<BarEntry>(); |
| |
| for (int index = 0; index < itemcount; index++) |
| entries.add(new BarEntry(index + 0.5f, getRandom(25, 25))); |
| |
| BarDataSet set = new BarDataSet(entries, "Bar DataSet"); |
| set.setColor(Color.rgb(60, 220, 78)); |
| set.setValueTextColor(Color.rgb(60, 220, 78)); |
| set.setValueTextSize(10f); |
| d.addDataSet(set); |
| |
| set.setAxisDependency(YAxis.AxisDependency.LEFT); |
| |
| return d; |
| } |
| |
| protected ScatterData generateScatterData() { |
| |
| ScatterData d = new ScatterData(); |
| |
| ArrayList<Entry> entries = new ArrayList<Entry>(); |
| |
| for (float index = 0; index < itemcount; index += 0.5f) |
| entries.add(new Entry(index + 0.25f, getRandom(10, 55))); |
| |
| ScatterDataSet set = new ScatterDataSet(entries, "Scatter DataSet"); |
| set.setColors(ColorTemplate.MATERIAL_COLORS); |
| set.setScatterShapeSize(7.5f); |
| set.setDrawValues(false); |
| set.setValueTextSize(10f); |
| d.addDataSet(set); |
| |
| return d; |
| } |
| |
| protected CandleData generateCandleData() { |
| |
| CandleData d = new CandleData(); |
| |
| ArrayList<CandleEntry> entries = new ArrayList<CandleEntry>(); |
| |
| for (int index = 0; index < itemcount; index += 2) |
| entries.add(new CandleEntry(index + 1f, 90, 70, 85, 75f)); |
| |
| CandleDataSet set = new CandleDataSet(entries, "Candle DataSet"); |
| set.setDecreasingColor(Color.rgb(142, 150, 175)); |
| set.setShadowColor(Color.DKGRAY); |
| set.setBarSpace(0.3f); |
| set.setValueTextSize(10f); |
| set.setDrawValues(false); |
| d.addDataSet(set); |
| |
| return d; |
| } |
| |
| protected BubbleData generateBubbleData() { |
| |
| BubbleData bd = new BubbleData(); |
| |
| ArrayList<BubbleEntry> entries = new ArrayList<BubbleEntry>(); |
| |
| for (int index = 0; index < itemcount; index++) { |
| float y = getRandom(10, 105); |
| float size = getRandom(50, 105); |
| entries.add(new BubbleEntry(index + 0.5f, y, size)); |
| } |
| |
| BubbleDataSet set = new BubbleDataSet(entries, "Bubble DataSet"); |
| set.setColors(ColorTemplate.VORDIPLOM_COLORS); |
| set.setValueTextSize(10f); |
| set.setValueTextColor(Color.WHITE); |
| set.setHighlightCircleWidth(1.5f); |
| set.setDrawValues(true); |
| bd.addDataSet(set); |
| |
| return bd; |
| } |
| |
| @Override |
| public boolean onCreateOptionsMenu(Menu menu) { |
| getMenuInflater().inflate(R.menu.combined, menu); |
| return true; |
| } |
| |
| @Override |
| public boolean onOptionsItemSelected(MenuItem item) { |
| switch (item.getItemId()) { |
| case R.id.actionToggleLineValues: { |
| for (IDataSet set : mChart.getData().getDataSets()) { |
| if (set instanceof LineDataSet) |
| set.setDrawValues(!set.isDrawValuesEnabled()); |
| } |
| |
| mChart.invalidate(); |
| break; |
| } |
| case R.id.actionToggleBarValues: { |
| for (IDataSet set : mChart.getData().getDataSets()) { |
| if (set instanceof BarDataSet) |
| set.setDrawValues(!set.isDrawValuesEnabled()); |
| } |
| |
| mChart.invalidate(); |
| break; |
| } |
| } |
| return true; |
| } |
| } |