package com.xxmassdeveloper.mpchartexample;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
import com.github.mikephil.charting.charts.CombinedChart;
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.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.xxmassdeveloper.mpchartexample.manage.JsonUtils;
import com.xxmassdeveloper.mpchartexample.manage.P2Data;
import com.xxmassdeveloper.mpchartexample.view.CombinedChart2;
import java.util.ArrayList;
/**
* @Info
* @Auth Bello
* @Time 18-2-5 下午4:42
* @Ver
*/
public class MyChart1Activity extends FragmentActivity {
private CombinedChart mChart;
String v = "{\"msg\":\"操作成功\",\"data\":[{\"sumPlasmaAmount\":2.02,\"plasmaName\":\"保亭\",\"sumGross\":\"1.49\"," +
"\"tsumGross\":\"0.95\"},{\"sumPlasmaAmount\":11.94,\"plasmaName\":\"巴马\",\"sumGross\":\"11.15\",\"tsumGross\":\"9.72\"}," +
"{\"sumPlasmaAmount\":12.73,\"plasmaName\":\"全州\",\"sumGross\":\"11.10\",\"tsumGross\":\"11.21\"},{\"sumPlasmaAmount\":11.19," +
"\"plasmaName\":\"大新\",\"sumGross\":\"10.86\",\"tsumGross\":\"9.08\"},{\"sumPlasmaAmount\":10.29,\"plasmaName\":\"马山\"," +
"\"sumGross\":\"10.61\",\"tsumGross\":\"9.44\"},{\"sumPlasmaAmount\":7.09,\"plasmaName\":\"琼中\",\"sumGross\":\"5.39\"," +
"\"tsumGross\":\"4.62\"},{\"sumPlasmaAmount\":4.41,\"plasmaName\":\"白沙\",\"sumGross\":\"3.02\",\"tsumGross\":\"2.66\"}," +
"{\"sumPlasmaAmount\":13.72,\"plasmaName\":\"大化\",\"sumGross\":\"13.26\",\"tsumGross\":\"12.08\"},{\"sumPlasmaAmount\":0.33," +
"\"plasmaName\":\"保康\",\"sumGross\":\"0.79\",\"tsumGross\":\"0\"},{\"sumPlasmaAmount\":16.46,\"plasmaName\":\"石门\"," +
"\"sumGross\":\"17.16\",\"tsumGross\":\"13.29\"},{\"sumPlasmaAmount\":0.59,\"plasmaName\":\"武宁\",\"sumGross\":\"0.91\"," +
"\"tsumGross\":\"0\"},{\"sumPlasmaAmount\":13.00,\"plasmaName\":\"醴陵\",\"sumGross\":\"12.84\",\"tsumGross\":\"14.39\"}]," +
"\"error\":\"-1\"}";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_chart1);
P2Data p2Data = (P2Data) JsonUtils.JsonStrToClass(v, P2Data.class);
String[] quarters = new String[p2Data.getData().size()];
ArrayList<Entry> entries1 = new ArrayList<>();
ArrayList<Entry> entries2 = new ArrayList<>();
ArrayList<BarEntry> barEntries1 = new ArrayList<>();
ArrayList<BarEntry> barEntries2 = new ArrayList<>();
for (int i=0; i<p2Data.getData().size();i++){
quarters[i] = p2Data.getData().get(i).getPlasmaName();
//(sumGross-tsumGross)*100 同比增长率
entries1.add(new Entry(i+0.5f, (Float.parseFloat(p2Data.getData().get(i).getSumGross()) - Float.parseFloat(p2Data.getData().get
(i).getTsumGross()))*100));
entries2.add(new Entry(i+0.5f, (p2Data.getData().get(i).getSumPlasmaAmount() - Float.parseFloat(p2Data.getData
().get
(i).getSumGross()))*100));
barEntries1.add(new BarEntry(i, p2Data.getData().get(i).getSumPlasmaAmount()));
barEntries2.add(new BarEntry(i, Float.parseFloat(p2Data.getData().get(i).getSumGross())));
}
CombinedChart2 mChart = findViewById(R.id.my_chart);
mChart.setData("双柱无线","", "","实际采浆","计划采浆", "人数","", quarters, null, null, barEntries1, barEntries2);
CombinedChart2 mChart2 = findViewById(R.id.my_chart2);
mChart2.setData("双柱单线","同比增长率", "","实际采浆","计划采浆", "人数","%", quarters, entries1, null, barEntries1, barEntries2);
CombinedChart2 mChart3 = findViewById(R.id.my_chart3);
mChart3.setData("双柱双线","同比增长率", "计划增长率","实际采浆","计划采浆", "人数","%", quarters, entries1, entries2, barEntries1, barEntries2);
// CombinedChart2 mChart4 = findViewById(R.id.my_chart4);
// mChart4.setData("单柱双线","同比增长率", "计划增长率","实际采浆","", "人数","%", quarters, entries1, entries2, barEntries1, null);
/*
mChart = findViewById(R.id.my_chart);
mChart.getDescription().setEnabled(false);
mChart.setBackgroundColor(Color.WHITE);
mChart.setDrawGridBackground(false);
mChart.setDrawBarShadow(false);
mChart.setHighlightFullBarEnabled(false);
mChart.setPinchZoom(false);
mChart.setDrawOrder(new CombinedChart.DrawOrder[]{CombinedChart.DrawOrder.LINE, CombinedChart.DrawOrder.BAR});
MyMarkerView mv = new MyMarkerView(this, R.layout.custom_marker_view);
mv.setChartView(mChart); // For bounds control
mChart.setMarker(mv); // Set the marker to the chart
//图例
Legend l = mChart.getLegend();
l.setWordWrapEnabled(true);
l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
l.setDrawInside(false);
YAxis rightAxis = mChart.getAxisRight();
rightAxis.setDrawGridLines(false);
rightAxis.setAxisMinimum(0f);
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setDrawGridLines(false);
leftAxis.setAxisMinimum(0f);
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setAxisMinimum(0f);
xAxis.setGranularity(1f);
xAxis.setLabelCount(12);
xAxis.setDrawGridLines(false);
xAxis.setCenterAxisLabels(true);
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return String.valueOf((int) value);
}
});
CombinedData data = new CombinedData();
data.setData(generateLineData());
data.setData(generateBarData());
xAxis.setAxisMaximum(data.getXMax() + 0.35f);
mChart.animateXY(3000, 3000);
mChart.setData(data);
mChart.invalidate();
*/
}
private LineData generateLineData() {
LineData d = new LineData();
ArrayList<Entry> entries = new ArrayList<>();
for (int index = 0; index < 12; index++)
entries.add(new Entry(index + 0.5f, (float) (Math.random() * 15) + 25));
LineDataSet set = new LineDataSet(entries, "Line DataSet");
set.setColor(Color.LTGRAY);
set.setLineWidth(0.5f);
set.setCircleColor(Color.GRAY);
set.setCircleRadius(0.8f);
set.setDrawCircles(false);
set.setFillColor(Color.LTGRAY);
set.setDrawFilled(true);
set.setMode(LineDataSet.Mode.CUBIC_BEZIER);
set.setDrawValues(false);
set.setValueTextSize(10f);
set.setValueTextColor(Color.rgb(240, 238, 70));
set.setAxisDependency(YAxis.AxisDependency.LEFT); //以左边Y轴的标签绘制
d.addDataSet(set);
return d;
}
private BarData generateBarData() {
ArrayList<BarEntry> entries1 = new ArrayList<>();
ArrayList<BarEntry> entries2 = new ArrayList<>();
for (int index = 0; index < 12; index++) {
entries1.add(new BarEntry(0, (float) (Math.random() * 15) + 20));
// stacked
entries2.add(new BarEntry(0, (float) (Math.random() * 13) + 12));
}
BarDataSet set1 = new BarDataSet(entries1, "Bar 1");
set1.setColor(Color.rgb(113, 180, 230));
set1.setValueTextColor(Color.rgb(60, 220, 78));
set1.setValueTextSize(10f);
set1.setAxisDependency(YAxis.AxisDependency.LEFT);
BarDataSet set2 = new BarDataSet(entries2, "Bar 2");
set2.setColor(Color.rgb(120, 230, 128));
set2.setValueTextColor(Color.rgb(60, 220, 78));
set2.setValueTextSize(10f);
set2.setAxisDependency(YAxis.AxisDependency.LEFT);
BarData d = new BarData(set1, set2);
d.setBarWidth(0.40f);
d.groupBars(0, 0.15f, 0.02f);
return d;
}
}