2016-07-13 3 views
1

방금 ​​Android 용 코드 및 학습을 배우기 시작했습니다. 내가 'A 막대 그래프에서 막대의 비율 (또는 HorizontalBarChart을 설정 MPAndroidChart 라이브러리에서 매개 변수 또는 메서드를 찾을 수없는, 그러나 Project Fi App UI : 지금 mpandroidchart barchart에서 막대의 비율 (y 축)을 설정하는 방법

, 나는 이런 식으로 뭔가를 만들려고 해요 m 사용). BarChart의 막대는 단순히 비율을 자동으로 결정합니다. 내가 원하는 것은 Y 축의 고정 된 최대 범위이며, 그래프의 막대의 비율은 값에 따라 변경됩니다.

또 다른 문제는 각 막대의 레이블을 제거 할 수 없다는 것입니다. 나는 썼다

 barChart.setDrawValueAboveBar(false); 

그러나 바는 여전히 그 오른쪽에 가치가있다.

막대 그래프를 포함하는 단편의 스크린 샷 : Screenshot

여기에 전체 코드

public class MainFragment extends android.support.v4.app.Fragment{ 
public MainFragment(){} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.main_fragment, container, false); 

    HorizontalBarChart barChart = (HorizontalBarChart)rootView.findViewById(R.id.time_chart); 

    ArrayList<BarEntry> vals = new ArrayList<BarEntry>(); 

    BarEntry val = new BarEntry(0.20f,0); 
    vals.add(val); 

    BarDataSet setTime = new BarDataSet(vals,"time used"); 
    setTime.setAxisDependency(YAxis.AxisDependency.LEFT); 
    setTime.setColor(R.color.colorAccent); 

    ArrayList<String> xVals = new ArrayList<String>(); 
    xVals.add("1"); 

    BarData data = new BarData(xVals, setTime); 
    barChart.setData(data); 
    barChart.setBackgroundColor(ContextCompat.getColor(rootView.getContext(),R.color.chartBackGround)); 
    barChart.setDrawValueAboveBar(false); 
    barChart.setDrawGridBackground(false); 
    barChart.setDrawBarShadow(true); 
    barChart.setDescription(""); 
    barChart.setVisibleYRangeMaximum(1.0f,barChart.getAxisLeft().getAxisDependency()); 

    barChart.getLegend().setEnabled(false); 
    barChart.getXAxis().setEnabled(false); 
    barChart.getXAxis().setDrawLabels(false); 
    barChart.getAxisRight().setEnabled(false); 
    barChart.getAxisLeft().setEnabled(false); 
    barChart.getAxisLeft().setAxisMaxValue(1.0f); 
    barChart.getAxisLeft().setAxisMinValue(0); 
    barChart.getAxisLeft().setDrawLabels(false); 

    barChart.invalidate(); 

    return rootView; 
} 

}

여기 내 color.xml의

<resources> 
<color name="colorPrimary">#607d8b</color> 
<color name="colorPrimaryDark">#455a64</color> 
<color name="colorAccent">#64ffda</color> 
<color name="windowBackground">#ffffff</color> 
<color name="chartBackGround">#ffffff</color> 
<color name="colorTransparent">#00ffffff</color> 

도움 주셔서 감사합니다. 나는 정말로 이것에 대한 답을 어디에서도 발견 할 수 없다. 사용

답변

0

시도 :

YAxis leftAxis = chart.getAxisLeft(); 
leftAxis.setAxisMaxValue(maxValue); 

이 당신에게 고정 된 최대 값을 제공해야합니다.

당신이 라벨을 제거하려면

는 시도 :

setDrawLabels(false) 

이 방법을 건너 뛰려면 라벨을 위로 따라 축 중 하나에 적용 할 수 있습니다.

필요한 모든 정보는 documentation에서 확인할 수 있습니다.

편집 : 사용이 의견에서 값의

setTime.setDrawValues(false); 

을 제거하기 위해, 당신은 또한 데이터 세트의 색상을 변경하는 방법을 물었다. 이를 위해 다음을 사용하십시오.

setTime.setColor(Color.CYAN); 
+0

고맙습니다! 그러나 레이블 문제는 해결되지 않습니다 ... 레이블은 축이 아니라 막대 위에 있습니다. 노력했지만 작동하지 않았습니다. 왜 궁금한데, 왜 maxValue를 설정하기 위해 또 다른 YAxis 객체를 선언 했습니까? barChart.getAxisLeft.setAxisMaxValue()를 쓸 수 있습니까? –

+0

네, 당신은 확실히'barChart.getAxisLeft'를 사용할 수 있습니다. 이것은 단지 그것을하는 또 다른 방법 일뿐입니다. 막대에있는 라벨의 문제점과 관련하여 보이는 모양과 어쩌면 일부 코드의 스크린 샷을 공유 할 수 있습니까? –

+0

문제가 아직 해결되지 않은 경우 자세한 내용을 제공해주십시오. 문제가 해결되면 대답을 수락 해보십시오. 그러면이 질문을 답이없는 질문 목록에서 삭제할 수 있습니다. –

관련 문제