Метки и столбцы не выровнены в гистограмме MPAndroidchart - PullRequest
0 голосов
/ 03 ноября 2018

Я использую MPAndroidChart для отображения гистограммы в моем приложении для Android. Но метки и столбцы xAxis не выровнены.

Я использовал MPAndroidChart: v3.0.3. На скриншоте полосы не выровнены с метками. Я следую примеру git . Пробовал какое-то решение, но на самом деле ничего не работает. Не могу определить проблему. Ширина стержня составляет .5f

настройка диаграммы

    barChart.setDrawBarShadow(false);
    barChart.setDrawValueAboveBar(true);
    barChart.getDescription().setEnabled(false);
    barChart.setMaxVisibleValueCount(60);
    barChart.setPinchZoom(false);
    barChart.setScaleEnabled(false);
    barChart.setDrawGridBackground(false);
    barChart.setFitBars(true);
    barChart.animateY(2500);

xAxis setup

    XAxis xAxis = barChart.getXAxis();
    xAxis.setSpaceMax(0.5f);
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setDrawAxisLine(true);
    xAxis.setCenterAxisLabels(false);
    xAxis.setGranularity(1f);
    xAxis.setAxisMinimum(0f);
    xAxis.setAxisMaximum(xAxisKeys.size());
    xAxis.setLabelCount(xAxisKeys.size(), true);
    IAxisValueFormatter xAxisFormatter = new CustomFormatter(xAxisKeys);
    xAxis.setValueFormatter(xAxisFormatter);

enter image description here

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Попробуйте удалить строки из вашего кода ниже. Прокомментируйте их и проверьте на наличие изменений:

xAxis.setAxisMinimum(0f);
xAxis.setAxisMaximum(xAxisKeys.size());
xAxis.setLabelCount(xAxisKeys.size(), true);

И следуйте приведенному ниже примеру базового графика, после чего вы можете настроить его, изменив свойства в соответствии с вашими требованиями:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    BarChart barChart = (BarChart) findViewById(R.id.chart1);
    BarData data = barData();

    barChart.setData(data);
    barChart.setFitBars(true);

    // xAxis customization
    XAxis xAxis = barChart.getXAxis();

    // Following code have no effect but you can change it if required
    xAxis.setGranularity(1f);
    xAxis.setGranularityEnabled(true);
    xAxis.setCenterAxisLabels(false);

    // Setting position of xAxis
    xAxis.setPosition(XAxis.XAxisPosition.BOTH_SIDED);

    // Setting labels to xAxis
    xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues()));

}

// creating list of x-axis values 
private ArrayList<String> getXAxisValues()
{
    ArrayList<String> labels = new ArrayList<String> ();

    labels.add( "JAN");
    labels.add( "FEB");
    labels.add( "MAR");
    labels.add( "APR");
    labels.add( "MAY");
    labels.add( "JUN");
    return labels;
}

// this method is used to create data for Bar graph 
public BarData barData()
{
    ArrayList<BarEntry> group1 = new ArrayList<BarEntry>();
    group1.add(new BarEntry(0, 3));
    group1.add(new BarEntry(1, 1));
    group1.add(new BarEntry(2, 4));
    group1.add(new BarEntry(3, 7));
    group1.add(new BarEntry(4, 3));
    group1.add(new BarEntry(5, 8));

    BarDataSet barDataSet = new BarDataSet(group1, "Brand 1");
    barDataSet.setAxisDependency(YAxis.AxisDependency.RIGHT);
    barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);

    BarData barData = new BarData(barDataSet);

    return barData;
}
} 
0 голосов
/ 03 ноября 2018

Пожалуйста, попробуйте установить это свойство

xAxis.setAvoidFirstLastClipping (ложь); * +1003 *

...