Skip to content

Commit c72f765

Browse files
author
Maragues
committed
Improved CombinedChart example. DataSets depend on different YAxis. Added a menu to toggle values annd YAxis dependency.
1 parent 93ff1bb commit c72f765

2 files changed

Lines changed: 97 additions & 9 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
3+
4+
<item
5+
android:id="@+id/actionToggleLineValues"
6+
android:title="Toggle line Values">
7+
</item>
8+
<item
9+
android:id="@+id/actionToggleBarValues"
10+
android:title="Toggle bar Values">
11+
</item>
12+
<item
13+
android:id="@+id/actionToggleBarYDependency"
14+
android:title="Toggle bar Y Axis dependency">
15+
</item>
16+
<item
17+
android:id="@+id/actionToggleLineYDependency"
18+
android:title="Toggle line Y Axis dependency">
19+
</item>
20+
21+
</menu>

MPChartExample/src/com/xxmassdeveloper/mpchartexample/CombinedChartActivity.java

Lines changed: 76 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
import android.graphics.Color;
55
import android.os.Bundle;
6+
import android.view.Menu;
7+
import android.view.MenuItem;
68
import android.view.WindowManager;
79

810
import com.github.mikephil.charting.charts.CombinedChart;
@@ -16,6 +18,7 @@
1618
import com.github.mikephil.charting.data.CandleDataSet;
1719
import com.github.mikephil.charting.data.CandleEntry;
1820
import com.github.mikephil.charting.data.CombinedData;
21+
import com.github.mikephil.charting.data.DataSet;
1922
import com.github.mikephil.charting.data.Entry;
2023
import com.github.mikephil.charting.data.LineData;
2124
import com.github.mikephil.charting.data.LineDataSet;
@@ -29,6 +32,8 @@ public class CombinedChartActivity extends DemoBase {
2932

3033
private CombinedChart mChart;
3134
private final int itemcount = 12;
35+
private final int maxYLeft = 40;
36+
private final int maxYRight = 60;
3237

3338
@Override
3439
protected void onCreate(Bundle savedInstanceState) {
@@ -40,13 +45,15 @@ protected void onCreate(Bundle savedInstanceState) {
4045
mChart = (CombinedChart) findViewById(R.id.chart1);
4146
mChart.setDescription("");
4247
mChart.setDrawGridBackground(false);
43-
48+
4449
YAxis rightAxis = mChart.getAxisRight();
4550
rightAxis.setDrawGridLines(false);
46-
51+
rightAxis.setAxisMaxValue(maxYRight);
52+
4753
YAxis leftAxis = mChart.getAxisLeft();
4854
leftAxis.setDrawGridLines(false);
49-
55+
leftAxis.setAxisMaxValue(maxYLeft);
56+
5057
XAxis xAxis = mChart.getXAxis();
5158
xAxis.setPosition(XAxisPosition.BOTH_SIDED);
5259

@@ -67,8 +74,9 @@ private LineData generateLineData() {
6774

6875
ArrayList<Entry> entries = new ArrayList<Entry>();
6976

77+
int minValue = 5;
7078
for (int index = 0; index < itemcount; index++)
71-
entries.add(new Entry(getRandom(15, 10), index));
79+
entries.add(new Entry(getRandom(maxYLeft - minValue, minValue), index));
7280

7381
LineDataSet set = new LineDataSet(entries, "Line DataSet");
7482
set.setColor(Color.rgb(240, 238, 70));
@@ -77,9 +85,12 @@ private LineData generateLineData() {
7785
set.setCircleSize(5f);
7886
set.setFillColor(Color.rgb(240, 238, 70));
7987
set.setDrawCubic(true);
80-
set.setDrawValues(false);
88+
set.setDrawValues(true);
89+
90+
set.setAxisDependency(YAxis.AxisDependency.LEFT);
91+
8192
d.addDataSet(set);
82-
93+
8394
return d;
8495
}
8596

@@ -89,16 +100,19 @@ private BarData generateBarData() {
89100

90101
ArrayList<BarEntry> entries = new ArrayList<BarEntry>();
91102

103+
int minValue = 20;
92104
for (int index = 0; index < itemcount; index++)
93-
entries.add(new BarEntry(getRandom(15, 30), index));
105+
entries.add(new BarEntry(getRandom(maxYRight - minValue, minValue), index));
94106

95107
BarDataSet set = new BarDataSet(entries, "Bar DataSet");
96108
set.setColor(Color.rgb(60, 220, 78));
97109
d.addDataSet(set);
98110

111+
set.setAxisDependency(YAxis.AxisDependency.RIGHT);
112+
99113
return d;
100114
}
101-
115+
102116
private ScatterData generateScatterData() {
103117

104118
ScatterData d = new ScatterData();
@@ -116,7 +130,7 @@ private ScatterData generateScatterData() {
116130

117131
return d;
118132
}
119-
133+
120134
private CandleData generateCandleData() {
121135

122136
CandleData d = new CandleData();
@@ -138,4 +152,57 @@ private CandleData generateCandleData() {
138152
private float getRandom(float range, float startsfrom) {
139153
return (float) (Math.random() * range) + startsfrom;
140154
}
155+
156+
@Override
157+
public boolean onCreateOptionsMenu(Menu menu) {
158+
getMenuInflater().inflate(R.menu.combined, menu);
159+
return true;
160+
}
161+
162+
@Override
163+
public boolean onOptionsItemSelected(MenuItem item) {
164+
switch (item.getItemId()) {
165+
case R.id.actionToggleLineValues: {
166+
for (DataSet<?> set : mChart.getData().getDataSets()) {
167+
if(set instanceof LineDataSet)
168+
set.setDrawValues(!set.isDrawValuesEnabled());
169+
}
170+
171+
mChart.invalidate();
172+
break;
173+
}
174+
case R.id.actionToggleBarValues: {
175+
for (DataSet<?> set : mChart.getData().getDataSets()) {
176+
if(set instanceof BarDataSet)
177+
set.setDrawValues(!set.isDrawValuesEnabled());
178+
}
179+
180+
mChart.invalidate();
181+
break;
182+
}
183+
case R.id.actionToggleBarYDependency: {
184+
for (DataSet<?> set : mChart.getData().getDataSets()) {
185+
if(set instanceof BarDataSet) {
186+
YAxis.AxisDependency newAxisDependency = set.getAxisDependency().equals(YAxis.AxisDependency.LEFT) ? YAxis.AxisDependency.RIGHT : YAxis.AxisDependency.LEFT;
187+
set.setAxisDependency(newAxisDependency);
188+
}
189+
}
190+
191+
mChart.invalidate();
192+
break;
193+
}
194+
case R.id.actionToggleLineYDependency: {
195+
for (DataSet<?> set : mChart.getData().getDataSets()) {
196+
if(set instanceof LineDataSet) {
197+
YAxis.AxisDependency newAxisDependency = set.getAxisDependency().equals(YAxis.AxisDependency.LEFT) ? YAxis.AxisDependency.RIGHT : YAxis.AxisDependency.LEFT;
198+
set.setAxisDependency(newAxisDependency);
199+
}
200+
}
201+
202+
mChart.invalidate();
203+
break;
204+
}
205+
}
206+
return true;
207+
}
141208
}

0 commit comments

Comments
 (0)