MPAndroidChart로 간단한 막대 그래프 만들기
요약
MPAndroidChart로 간단한 그래프를 만들고 싶다면,
기능이 충실한 덕분에 반대로 간단한 그래프를 만드는 것이 알기 어려웠다.
ver3.0.2가 되어 이전 버전과 조금 바뀌었다(x축의 라벨의 표시라든지…)
하고 싶었던 일
이런 느낌의 간단한 막대 그래프를 만들고 싶었다.
특히 이해하기 어려운 점
・x축에 라벨 표시
・그래프마다 임의의 색을 설정
방법
public class MainActivity extends AppCompatActivity {
protected BarChart chart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chart = (BarChart) findViewById(R.id.chart1);
//表示データ取得
BarData data = new BarData(getBarData());
chart.setData(data);
//Y軸(左)
YAxis left = chart.getAxisLeft();
left.setAxisMinimum(0);
left.setAxisMaximum(100);
left.setLabelCount(5);
left.setDrawTopYLabelEntry(true);
//整数表示に
left.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return "" + (int)value;
}
});
//Y軸(右)
YAxis right = chart.getAxisRight();
right.setDrawLabels(false);
right.setDrawGridLines(false);
right.setDrawZeroLine(true);
right.setDrawTopYLabelEntry(true);
//X軸
XAxis xAxis = chart.getXAxis();
//X軸に表示するLabelのリスト(最初の""は原点の位置)
final String[] labels = {"","国語", "数学", "英語"};
xAxis.setValueFormatter(new IndexAxisValueFormatter(labels));
XAxis bottomAxis = chart.getXAxis();
bottomAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
bottomAxis.setDrawLabels(true);
bottomAxis.setDrawGridLines(false);
bottomAxis.setDrawAxisLine(true);
//グラフ上の表示
chart.setDrawValueAboveBar(true);
chart.getDescription().setEnabled(false);
chart.setClickable(false);
//凡例
chart.getLegend().setEnabled(false);
chart.setScaleEnabled(false);
//アニメーション
chart.animateY(1200, Easing.EasingOption.Linear);
}
//棒グラフのデータを取得
private List<IBarDataSet> getBarData(){
//表示させるデータ
ArrayList<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry(1, 60));
entries.add(new BarEntry(2, 80));
entries.add(new BarEntry(3, 70));
List<IBarDataSet> bars = new ArrayList<>();
BarDataSet dataSet = new BarDataSet(entries, "bar");
//整数で表示
dataSet.setValueFormatter(new IValueFormatter() {
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
return "" + (int) value;
}
});
//ハイライトさせない
dataSet.setHighlightEnabled(false);
//Barの色をセット
dataSet.setColors(new int[]{R.color.material_blue, R.color.material_green, R.color.material_yellow}, this);
bars.add(dataSet);
return bars;
}
}
x축에 라벨을 표시하려면 데이터의 x축에 표시되는 수치를 라벨로 변환하는 느낌.
그래프 마다 임의의 색을 설정은 데이터의 리스트에 색의 리스트를 세트 하는 것으로 실행 가능.
그 외, 디폴트라고 확대축소가 생기거나, 탭하면 하이라이트 되거나,
눈금이 많으면 많거나 조정하는데 상당히 여러가지 해야 했다.
참고
x 축에 레이블 (htps : // 기주 b. 코 m/P 히자 y/M 팬 d로이 d 짱 rt/이스에 s/2044)
그래프 당 색상 (h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 38872181 / m 팡 d 로이 d 짱 rt ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー
Reference
이 문제에 관하여(MPAndroidChart로 간단한 막대 그래프 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/iKimishima/items/7fd192a074739cf5290b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public class MainActivity extends AppCompatActivity {
protected BarChart chart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chart = (BarChart) findViewById(R.id.chart1);
//表示データ取得
BarData data = new BarData(getBarData());
chart.setData(data);
//Y軸(左)
YAxis left = chart.getAxisLeft();
left.setAxisMinimum(0);
left.setAxisMaximum(100);
left.setLabelCount(5);
left.setDrawTopYLabelEntry(true);
//整数表示に
left.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return "" + (int)value;
}
});
//Y軸(右)
YAxis right = chart.getAxisRight();
right.setDrawLabels(false);
right.setDrawGridLines(false);
right.setDrawZeroLine(true);
right.setDrawTopYLabelEntry(true);
//X軸
XAxis xAxis = chart.getXAxis();
//X軸に表示するLabelのリスト(最初の""は原点の位置)
final String[] labels = {"","国語", "数学", "英語"};
xAxis.setValueFormatter(new IndexAxisValueFormatter(labels));
XAxis bottomAxis = chart.getXAxis();
bottomAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
bottomAxis.setDrawLabels(true);
bottomAxis.setDrawGridLines(false);
bottomAxis.setDrawAxisLine(true);
//グラフ上の表示
chart.setDrawValueAboveBar(true);
chart.getDescription().setEnabled(false);
chart.setClickable(false);
//凡例
chart.getLegend().setEnabled(false);
chart.setScaleEnabled(false);
//アニメーション
chart.animateY(1200, Easing.EasingOption.Linear);
}
//棒グラフのデータを取得
private List<IBarDataSet> getBarData(){
//表示させるデータ
ArrayList<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry(1, 60));
entries.add(new BarEntry(2, 80));
entries.add(new BarEntry(3, 70));
List<IBarDataSet> bars = new ArrayList<>();
BarDataSet dataSet = new BarDataSet(entries, "bar");
//整数で表示
dataSet.setValueFormatter(new IValueFormatter() {
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
return "" + (int) value;
}
});
//ハイライトさせない
dataSet.setHighlightEnabled(false);
//Barの色をセット
dataSet.setColors(new int[]{R.color.material_blue, R.color.material_green, R.color.material_yellow}, this);
bars.add(dataSet);
return bars;
}
}
Reference
이 문제에 관하여(MPAndroidChart로 간단한 막대 그래프 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/iKimishima/items/7fd192a074739cf5290b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)