| |
| package com.xxmassdeveloper.mpchartexample; |
| |
| import android.graphics.Color; |
| 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.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.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 |
| }); |
| |
| YAxis rightAxis = mChart.getAxisRight(); |
| rightAxis.setDrawGridLines(false); |
| |
| YAxis leftAxis = mChart.getAxisLeft(); |
| leftAxis.setDrawGridLines(false); |
| |
| XAxis xAxis = mChart.getXAxis(); |
| xAxis.setPosition(XAxisPosition.BOTH_SIDED); |
| |
| CombinedData data = new CombinedData(mMonths); |
| |
| data.setData(generateLineData()); |
| data.setData(generateBarData()); |
| // data.setData(generateBubbleData()); |
| // data.setData(generateScatterData()); |
| // data.setData(generateCandleData()); |
| |
| 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(getRandom(15, 10), index)); |
| |
| 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.setDrawCubic(true); |
| 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(); |
| |
| ArrayList<BarEntry> entries = new ArrayList<BarEntry>(); |
| |
| for (int index = 0; index < itemcount; index++) |
| entries.add(new BarEntry(getRandom(15, 30), index)); |
| |
| 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 (int index = 0; index < itemcount; index++) |
| entries.add(new Entry(getRandom(20, 15), index)); |
| |
| ScatterDataSet set = new ScatterDataSet(entries, "Scatter DataSet"); |
| set.setColor(Color.GREEN); |
| 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++) |
| entries.add(new CandleEntry(index, 20f, 10f, 13f, 17f)); |
| |
| CandleDataSet set = new CandleDataSet(entries, "Candle DataSet"); |
| set.setColor(Color.rgb(80, 80, 80)); |
| set.setBodySpace(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 rnd = getRandom(20, 30); |
| entries.add(new BubbleEntry(index, rnd, rnd)); |
| } |
| |
| 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; |
| } |
| |
| private float getRandom(float range, float startsfrom) { |
| return (float) (Math.random() * range) + startsfrom; |
| } |
| |
| @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; |
| } |
| } |