2017-03-25 5 views
2

XAxisの値が整列していません。どのような設定を変更する必要がありますか?以下はMPandroid x軸のラベルが棒グラフと一致していません

x axis not aligned

私はこれまでのところ、私のコードを持っていると私はバージョン3.0.1を使用していますので、.setLabelsToSkipが動作しませんものです。ここで

XAxis xAxis = mChart.getXAxis(); 
    xAxis.setTypeface(mTfLight); 
    xAxis.setGranularity(1f); 
    xAxis.setCenterAxisLabels(true); 
    xAxis.setDrawLabels(true); 
    xAxis.setGranularity(1f); 
    xAxis.setGranularityEnabled(true); 
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); 
    xAxis.setTextColor(Color.WHITE); 
    xAxis.setTextSize(15); 

は私のLabelFormatterクラスです:

:私はこのようにそれを使用しています私の主な活動で

private void setData() { 
    ArrayList<BarEntry> entries = new ArrayList<>(); 
    String labels[]=new String[5]; 
    for (Cars c : values) { 

     if (c.getX()==1){ 
      labels[0] = "Engine 1"; 
     } 
     if (c.getX()==2){ 
      labels[1] = "Engine 2"; 
     } 
     if (c.getX()==3){ 
      labels[2] = "Engine 3"; 
     } 
     if (c.getX()==4){ 
      labels[3] = "Engine 4"; 
     } 
     if (c.getX()==5){ 
      labels[4] = "Engine 5"; 
     } 

     entries.add(new BarEntry((float) c.getX(), ((float) c.getY()),labels)); 

    } 
    BarDataSet set1; 

    if (mChart.getData() != null && mChart.getData().getDataSetCount() > 0) { 
     set1 = (BarDataSet) mChart.getData().getDataSetByIndex(0); 
     set1.setValues(entries); 

     mChart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(labels)); 
     //set1.setValueFormatter(new LabelFormatter(labels)); 
     //mChart.getXAxis().setValueFormatter(new BarValueFormatter(set1)); 
     mChart.getData().notifyDataChanged(); 
     mChart.notifyDataSetChanged(); 

    } else { 
     set1 = new BarDataSet(entries, "Engine Types"); 

     ArrayList<Integer> colors = new ArrayList<Integer>(); 

     for (int c : ColorTemplate.VORDIPLOM_COLORS) 
      colors.add(c); 

     for (int c : ColorTemplate.JOYFUL_COLORS) 
      colors.add(c); 

     for (int c : ColorTemplate.COLORFUL_COLORS) 
      colors.add(c); 

     for (int c : ColorTemplate.LIBERTY_COLORS) 
      colors.add(c); 

     for (int c : ColorTemplate.PASTEL_COLORS) 
      colors.add(c); 

     colors.add(ColorTemplate.getHoloBlue()); 

     set1.setColors(colors); 


     ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>(); 
     dataSets.add(set1); 
     mChart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(labels)); 
     //mChart.getXAxis().setValueFormatter(new LabelFormatter(labels)); 
     //mChart.getXAxis().setValueFormatter(new BarValueFormatter(set1)); 
     BarData data = new BarData(dataSets); 
     data.setValueTextSize(50f); 
     data.setValueTextColor(Color.WHITE); 
     data.setValueTypeface(mTfLight); 



     mChart.setData(data); 


    } 

} 

:ここ

import com.github.mikephil.charting.components.AxisBase; 
import com.github.mikephil.charting.formatter.IAxisValueFormatter; 

public class LabelFormatter implements IAxisValueFormatter { 
private final String[] mLabels; 

public LabelFormatter(String[] labels) { 
    mLabels = labels; 
} 

@Override 
public String getFormattedValue(float value, AxisBase axis) { 
    return mLabels[(int) value]; 
} 
} 

は私の主な活動のSetDataメソッドであります

mChart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(labels)); 
+0

AxisValueFormatterはどこですか?あなたが使っているものを含めるには[編集]してください。たぶん 'IndexValueFormatter'? –

+0

@David Rawson、LabelFormatterに使用しているクラスファイルが含まれていて、メインアクティビティでどのように呼び出すのですか。 – raptor496

+0

あなたはどちらを使用していますか? 'IndexValueFormatter'または' LabelFormatter'ですか?あなたのコードは両方を示しているので、それは明らかではありません。また、 '(int)value'を使用しないでください。これは常に値の下にあります。 'int index = Math.round(value);を使用してください。 –

答えて

0

xAxisラベルを各バーの中央に揃えるには、setCenterAxisLabelsプロパティをfalseに設定します。

xAxis.setCenterAxisLabels(false); 
+0

私はそれを試みました。何が起きるかは、それらが一直線になることですが、最初のラベルは画面から完全に消え、すべてのラベルの位置は左に移動します。最後のバーにはラベルがありません。 – raptor496

+0

plsポストツアー(x、y)データ –

+0

ok私の主な活動setdataメソッドが追加されました – raptor496

関連する問題