2013년 6월 7일 금요일

안드로이드 차트 라이브러리 - Essence Chart(에센스 차트) SDK 샘플 소스

Essence Chart SDK Sample App Source

에센스 차트 SDK 샘플 앱 소스를 공개합니다.
("Stefano Falasca"씨 찾으시던 소스를 이제 공개합니다.)

아래 주소로 가면 안드로이드 Play 스토어에 등록된 샘플 앱의 소스를 받으실 수 있습니다.
샘플 소스는 github를 통해서 업그레이드 될것입니다.

https://github.com/essencetech/essencechart


다운로드 ZIP

https://github.com/essencetech/essencechart/archive/master.zip

문의 사항은 블로그에 남겨주세요.

댓글 19개:

  1. 방사형 그래프에서 setYAxisMaximum이 작동하지 않는 것 같습니다. 고쳐주셨으면 좋겠습니다 ㅜㅜ

    답글삭제
    답글
    1. 문의 하신 setYAxisMaximum API는 데이터 큐 기능을 활성 화 후 Y 축 최대값을 설정하기 위한 기능입니다.
      현재 데이터 큐 기능은 차트 타입이 꺽은 선형, 누적 꺽은 선형, 표식이 있는 꺽은 선형일 경우에만 동작을 합니다.
      따라서 setYAxisMaximum API도 해당 차트 타입에서 정상 동작 하도록 설계 되어 있지만, 다른 타입에서도 동작은 합니다.
      다만, 해당 API는 차트의 종류를 변경했을 경우 초기화 되도록 설계 되어 있습니다.
      해당 API를 사용하시려고 하시면 차트의 종류를 변경 후 다시 한번 호출 하셔서 설정 해야 합니다.
      방사형에서도 차트 종류를 변경 후에 setYAxisMaximum API을 호출 하면 동작을 되는 것 확인 하였습니다.
      방사형으로 차트 변경 후 setYAxisMaximum API를 다시한번 호출 하시면 됩니다.

      삭제
  2. chart.setChartType(Chart.Chart_Type_Line) 꺽은 선 그래프로 변환후
    chart.chart.setYAxisMaximum(true, 500) 를 호출 하면 Y 축 최대값이 변경되질 않습니다.

    꺽은 선 그래프가 아닌

    chart.setChartType(Chart.Chart_Type_3D_Column) 3차원 세로 막대형으로 변환후
    chart.chart.setYAxisMaximum(true, 500) 를 호출하게 되면 Y 축 최대값이 변경됩니다.

    꺽은 선형의 Y 축 최대값을 변경하려면 다른 작업이 선행되어야 하나요 ?

    답글삭제
    답글
    1. 문의 하신 Chart_Type_Line에서도 setYAxisMaximum이 정상 동작 하는것을 확인 하였습니다.
      setYAxisMaximum API는 Y축에 표시되는 최대 값을 설정하는 기능입니다.
      예를 들어 setYAxisMaximum(true, 500)로 설정 할 경우,
      Chart Data에 1000이라는 값이 있어도 Y축에는 500으로 표시되며 Y축의 눈금자도 500으로 제한이 됩니다.
      Chart Data는 영향을 받지 않습니다.

      샘플 소스는 github에서 받으 실 수 있습니다.
      https://github.com/essencetech/essencechart

      삭제
    2. 저도 다른 차트들은 잘 되는데 Line , Line with Markets 는 setYAxisMaximum 이 적용되지 않네요...

      삭제
  3. 작성자가 댓글을 삭제했습니다.

    답글삭제
  4. 작성자가 댓글을 삭제했습니다.

    답글삭제
  5. 차트 내의 데이터를 표시하는 색깔을 각각 데이터 별로 정의할 수 있는 API 는 제공되지 않는 건가요? 혹시 제공 의사가 있으신지요?
    추가로 차트 내의 데이터를 각각 visible / invisible 처리가 되게 하는 기능의 API은 제공 의사가 있으신가요?

    답글삭제
    답글
    1. 여름 휴가를 다녀와서 답변이 좀 늦었습니다.

      문의하신 내용의 API는 추가하여 제공할 예정입니다. 다른일을 하면서 만드는 것이라서 속도가 좀 늦네요...

      감사합니다.

      삭제
    2. 어익후 감사합니다.
      꾸준한 관리에 감사할 따름입니다.

      삭제
  6. 안녕하세요. 잦은 질문 죄송합니다.
    setYAxisMaximum 메소드를 수행해도 맥스값이 고정이 안되는 부분에 대해서 문의드립니다.
    아래와 같이 Chart 최초 호출 후 차트 타입 선언 후 바로 setYAxisMaximum 호출했는데도 맥스값 고정이 안되는데요...
    호출 하는 방식이 틀린건가요?
    번거로우시겠지만 확인 부탁드리겠습니다.


    public class ChartTest3Activity extends Activity {

    //essence chart variable
    private Chart m_Chart = null;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.chart_test);

    m_Chart = (Chart)findViewById(R.id.chart01);

    if (m_Chart == null )
    {
    return;
    }

    //차트 타입을 설정한다.
    m_Chart.setChartType(Chart.Chart_Type_Line);
    m_Chart.setYAxisMaximum(true, 5000);
    }

    }

    답글삭제
    답글
    1. 문의 하신 setYAxisMaximum를 확인 해보니 OnCreate에서 설정하면 초기화 되지 않는 증상이 있습니다.
      OnCreatedptj Chart.Chart_Type_Clustered_Column으로 Type을 설정 후 화면이 그려진 후
      Chart.Chart_Type_Line로 변경 후 setYAxisMaximum를 호출 하여야 합니다.
      이 부분은 추후 수정하여 업데이트 하도록 하겠습니다.

      삭제
  7. 안녕하세요

    먼저 너무 유용한 라이브러리를 만들어주셔서 너무 감사드립니다.

    다름이 아니고 이번에 샘플 소스를 오픈하셨는데요.

    라이센스에 대해서 궁금한 점이 있어서요.

    essence.chart.0.7.12.jar를 import 하지 않고, 샘플 소스 내부의 com.essence.chart 패키지를 포함 및 활용하여 앱을 개발해도 되는 것인지요. 답변 부탁드립니다. 다시 한 번 감사드립니다.^^

    답글삭제
    답글
    1. 네.. 자유롭게 사용하실 수 있습니다. 배포 또한 자유롭게...

      앱 내부 또는 소개페이지에 차트에 대해 소개해 주시면 더할 나위 없이 감사하겠습니다. (물론 소개하지 않으셔도 상관없습니다. :-)

      삭제
  8. 안녕하세요~ 첨뵙겠습니다 .차트 보다가 대단한걸 발견했네요 ㅎㄷㄷ;;
    질문이 있습니다.
    ㅠㅠ라이브러리 sdk 다 다운받아서 사용해봤습니다.
    하지만 예제 샘플로 samsung 이나 apple 이 들어가있던데
    2d stack type으로 사용하려고 하면서 제가 넣고 싶은 데이터들을 넣진 못하는건가요...??

    답글삭제
    답글
    1. setSourceData의 GridData를 생성하실 때 첫번째 Column과 Row는 Data의 Column, Row의 Title 값으로 사용이 됩니다.
      실제 Data는 (1,1) 부터 시작이 됩니다.
      아래의 소스를 참조 하십시오.

      protected boolean initChart() {
      m_Chart = (Chart)findViewById(R.id.chart01);
      if (m_Chart == null) {
      return false;
      }

      String[] strColumns = { "Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8" };
      String[] strRows = { "Row1", "Row2", "Row3", "Row4", "Row5", "Row6", "Row7", "Row8" };
      double[][] dValue = {
      {1000,1500,2000,1000,3000,5000,7000,6000},
      {4000,2500,2000,2000,4000,6000,4000,6000},
      {6000,8500,5000,2000,5000,6000,4000,6000},
      {6000,8500,5000,2000,5000,6000,4000,6000},
      {6000,8500,5000,2000,5000,6000,4000,6000},
      {6000,8500,5000,2000,5000,6000,4000,6000},
      {6000,8500,5000,2000,5000,6000,4000,6000},
      {6000,8500,5000,2000,5000,6000,2000,10}
      };
      GridData gridData = new GridData(8,8);

      for(int nRow = 0; nRow < 8; nRow++) {
      for(int nColumn = 0; nColumn < 8; nColumn++) {
      if (nRow == 0) {
      gridData.setCell(nRow, nColumn, strColumns[nColumn]); // Column Title
      } else if (nColumn == 0) {
      gridData.setCell(nRow, nColumn, strRows[nRow]); // Row Title --> 범례
      } else {
      gridData.setCell(nRow, nColumn, dValue[nRow][nColumn]); // 실제 Data
      }
      }
      }

      m_Chart.setChartType(Chart.Chart_Type_Line);
      m_Chart.setSourceData(gridData, 1);

      return true;
      }

      자세한 내용은 안드로이드 차트 라이브러리 - Essence Chart(에센스 차트) SDK 샘플 소스(http://essenceware.blogspot.kr/2013/06/essence-chart-sdk.html)를 참조 하시면 됩니다.

      삭제
  9. 안녕하세요.. 차트 잘 쓰고있습니다^^
    궁금한점이있어서..
    위에 분들과 동일한데요.. 해결이 안되네요..

    protected boolean initChart() {
    Chart m_Chart4 = (Chart) findViewById(R.id.chart04);

    if (m_Chart4.isDataQueue() == true) {
    m_Chart4.beginDataQueue();
    }
    int n_Chart = Chart.Chart_Type_Line_with_Markets;

    if(n_Chart == Chart.Chart_Type_Line_with_Markets){

    m_Chart4.setYAxisMaximum(true, 2000);

    }

    m_Chart4.setChartType(Chart.Chart_Type_Line_with_Markets);

    차트 Y 값을 지정해주는 setYAxisMaximum(true,2000) 이게 적용이 계속안되네요..
    라인들을 바꾸어 가면서 해봐도 적용이 되지를 않네요... 혹시 답변 가능할까요..
    이거에서 막혀있네요 ㅠㅠ
    initChart()는 onCreate에서 호출하는 함수이구요.. 버전은 library 1.0 쓰고있어요..

    답글삭제
  10. puchData() 사용해서 데이터 추가하는 소스에요..

    답글삭제