2016-07-12 3 views
3
private void plotchart(String s[], float[] f1) { 
    chart.setBackgroundColor(Color.rgb(63, 81, 181)); 
    chart.setDescription(""); 
    // enable touch gestures 
    chart.setTouchEnabled(true); 
    chart.setScaleEnabled(false); 
    chart.setPinchZoom(false); 
    chart.setGridBackgroundColor(Color.rgb(30, 46, 141)); 
    chart.setDrawGridBackground(false); 
    chart.getAxisRight().setEnabled(false); 
    chart.setDrawMarkerViews(true); 
    chart.setDragEnabled(true); 
    chart.setViewPortOffsets(0f, 0f, 0f, 0f); 

    // chart.setVisibleXRangeMaximum(4); 


    chart.getLegend().setEnabled(false); 

    XAxis x = chart.getXAxis(); 
    x.setEnabled(true); 
    x.setDrawGridLines(false); 
    x.setPosition(XAxis.XAxisPosition.BOTTOM_INSIDE); 
    x.setTextColor(Color.rgb(128, 128, 255)); 
    x.isDrawLabelsEnabled(); 
    x.setAxisLineColor(Color.BLACK); 
    x.setSpaceBetweenLabels(3); 
    x.setAvoidFirstLastClipping(true); 


    YAxis y = chart.getAxisLeft(); 
    y.setAxisLineColor(Color.BLACK); 
    y.setTextColor(Color.BLACK); 
    y.setEnabled(true); 
    y.setAxisLineColor(Color.rgb(128, 128, 255)); 
    y.setPosition(YAxis.YAxisLabelPosition.INSIDE_CHART); 
    y.setDrawGridLines(false); 
    y.setLabelCount(5,true); 
    y.setGridColor(Color.rgb(128, 128, 255)); 
    y.setDrawZeroLine(false); 
    y.setDrawLimitLinesBehindData(true); 
    y.setDrawGridLines(true); 
    y.setDrawLimitLinesBehindData(true); 
    y.setTextColor(Color.rgb(128, 128, 255)); 
// chart.setExtraOffsets(20f,2f,20f,2f); 

    ArrayList<com.github.mikephil.charting.data.Entry> entries= new ArrayList<>(); 
    for (int i = 0; i < f1.length; i++) { 
     // Log.i("f1",f1[i]+""); 
     entries.add(new com.github.mikephil.charting.data.Entry(f1[i], i)); 
    } 

    MymarkerView mv =new MymarkerView(this,R.layout.custom_marker_view); 
    chart.setMarkerView(mv); 

    LineDataSet dataset = new LineDataSet(entries, ""); 
    dataset.isDrawCirclesEnabled(); 
    dataset.setCircleRadius(0f); 
    dataset.setDrawFilled(true); 
    dataset.setFillColor(Color.rgb(0, 0, 0)); 
    dataset.setLineWidth(0.2f); 
    dataset.setValueTextSize(0f); 

    dataset.setColor(Color.rgb(0, 0, 0)); 

    // chart.setVisibleXRange(1, 5); 
    // chart.setVisibleYRangeMaximum(5, YAxis.AxisDependency.LEFT); 
    // chart.setClickable(true); 
    chart.invalidate(); 


    ArrayList<String> time = new ArrayList<String>(); 
    for (int i = 0; i < s.length; i++) { 
     time.add(i, s[i]); 
    } 

    LineData data = new LineData(time, dataset); 
    chart.setData(data); 


} 

Я установил значения Y-Axis с помощью команды setLabelCount(). Но как исправить количество значений X-Axis в моей диаграмме. Для приведенного выше кода у меня сформирована следующая диаграмма. Chart1Chart2 ..Это две диаграммы, сформированные для разных аргументов, заданных для метода plotchart (String [], float []). Во всех этих диаграммах я столкнулся с проблемой, что он не показывает фиксированное число значений оси x . Где-то он показывает 9 значений и где-то он показывает 7 значений. И еще одна проблема, с которой я сталкиваюсь, заключается в том, что мои первые и последние значения Y-Axis скрываются на моем дисплее.MP Android Chart - как исправить количество значений X-Axis в линейной диаграмме?

ответ

2

Если я хорошо понял ваш вопрос, кажется, вы хотите использовать метод setVisibleXRangeMaximum.

Удерживающие что видно

setVisibleXRangeMaximum (поплавок maxXRange): Устанавливает размер области (диапазон на оси х), которые должны быть максимально виден сразу. Если это, например, установленное в 10, не более 10 значений по оси x можно просматривать сразу без прокрутки.

Этот метод документирован в части Viewport учебника MPAndroidChart, который является linked here.

Конечно, я думаю, вам придется использовать setVisibleXRangeMinimum если вы хотите, чтобы исправить верхнюю и более низкие оценки для числа значений X.

1

setLabelCount() свойство есть для xAxis тоже.

XAxis xAxis = lineChart.getXAxis(); 
xAxis.setLabelCount(5); 
0

Набор Ось X значения

xAxis.setValueFormatter(new IAxisValueFormatter() { 
     @Override 
     public String getFormattedValue(float value, AxisBase axis) { 
      return (int) value + ""; 
     } 
    }); 

 Смежные вопросы

  • Нет связанных вопросов^_^