게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c# tchart series 추가시 그래프 출력
게시물ID : programmer_15341짧은주소 복사하기
작성자 : 하린
추천 : 0
조회수 : 978회
댓글수 : 3개
등록시간 : 2016/01/07 01:51:30
ffff2.jpg
 
              
            List<string> Name_List1 = new List<string>();
            List<string> Name_List2 = new List<string>();
            List<string> Name_List3 = new List<string>();
            List<double> Count = new List<double>();
            List<string> StrSelect1 = new List<string>();
            List<string> StrSelect2 = new List<string>();
            List<string> StrSelect3 = new List<string>();
            List<double> strSum = new List<double>();
                    Graph_Name1 = "지역";
                    for (int index = 0; index < 성.Count; index++)
                    {
                        for (int index2 = 0; index2 < 지역.Count; index2++)
                        {
                            expression = Graph_Name1 + "= '" + 지역[index2] + "'";
                            var Graph = (from dr in LowData_Graph.Select(expression).AsEnumerable().Distinct()
                                         group dr by new { Name1 = dr.Field<string>("F/M"), Name2 = dr.Field<string>("성"), Name3 = dr.Field<string>("지역") } into gg
                                         select new
                                         {
                                             Name1 = gg.Key.Name1,
                                             Name2 = gg.Key.Name2,
                                             Count = gg.Count();
                                         }).Distinct();
                            foreach (var x in Graph)
                            {
                                Name_List1.Add(x.Name1.ToString());
                                Name_List2.Add(x.Name2.ToString());
                                Count.Add(x.Count);
                            }
                            DataRow[] Select_Data = LowData_Graph.Select(expression);
                            SelectTable = LowData_Graph.Clone();
                            foreach (DataRow dr in Select_Data)
                            {
                                SelectTable.Rows.Add(dr.ItemArray);
                            }
                            c.Header.성s = new string[] { "집계" };
                            c.Series.Add(new Steema.TeeChart.Styles.HorizBar());
                            c.Series[index2].Marks.Style = Steema.TeeChart.Styles.MarksStyles.Value;
                            c.Series[index2].Clear();
                        }                        
                    }
                    for (int i = 0; i < Name_List1.Count; i++ )
                    {
                        Name_List3.Add(Name_List1[i] + "/" + Name_List2[i] + "/" + TimeSum_List[i].ToString());
                    }
                    List_Distinct(Name_List3, Name_LowList1);
                    Name_LowList1.Sort();
                    for (int i = 0; i < Name_LowList1.Count; i++)
                    {
                        string temp;
                        string[] Array;
                        temp = Name_LowList1[i];
                        Array = temp.Split('/');
                        StrSelect1.Add(Array[0]);
                        StrSelect2.Add(Array[1]);
                        strSum.Add(double.Parse(Array[2]));                         
                    }
                    int count = 0;
                    for (int i = 0; i < F/M.Count; i++)
                    {
                        for (int j = 0; j < 성.Count; j++)
                        {
                            for (int k = 0; k < StrSelect2.Count; k++)
                            {
                                if (StrSelect1[k].Equals(F/M[i]) && StrSelect2[k].Equals(성[j]))
                                {
                                    c.Series[count].Add(strSum[k], StrSelect1[k] + "-" + StrSelect2[k]);
                                    count = count + 1;
                                }
                            }
                            count = 0;
                        }
                    }

//-------------------------------------------------------------------------------------------------------------------
        private void List_Distinct(List<string> DataList, List<string> Dis_DataList)
        {
            IEnumerable<string> distinct = DataList.Distinct();   
            foreach (string Dis in distinct)
            {
                Dis_DataList.Add(Dis);
            }
        }
//---------------------------------------------------------------------------------------------------------------------
 
소스는 이런식으로 구성이 되어 있으며 
<내용>의 경우 c.Series[count].Add(strSum[k], StrSelect1[k] + "-" + StrSelect2[k]); 을 찍어서 하나씩 데이터 나온것을 옮겨 적은 것입니다. 
그래프가 나오는게 A처럼 나오는걸로 예상을 했으나 .. 결과는 B처럼 나오더라구요.
아무래도 Series가 1이면 0이였던 제일 처음의 막대 다음에 그려져서 그런걸로 예상이 됩니다만.... 
B처럼 나오게 하려면 F/M과 성 2개를 기준으로 정렬을 한 뒤에 그래프를 그려야 하나... 싶지만 이것도 데이터가 어떻게 될지 모르므로 B와 같은
결과가 다시 나오리라 생각됩니다... 이런 경우 serise값을 어떻게 해줘야 A처럼 그래프가 나오나요



글 다시 올려서 죄송합니다 ㅠ
오늘  하루종일 머릴 굴려봐도 도저히 해결이 안되네요 ㅠ
series 추가 되는 부분에서 f/m 과 이름의 성이 같을 때 지역의 갯수를 체크해서 지역이 1개인것은 임의적으로 하나 더 series를 추가한 후 데이터는 0으로 넣어보려고 시도를 해봤는데 for문에서 지역의 갯수를 제대로 체크하지 못 해 이건 일단 낼 아침에 다시 해보고... 
다른 방식으로 생각을 해본게 f/m 과 이름의 성이 같을 때 배열에 넣어볼까 생각 중 입니다.
이런저런 방법을 생각해보고 시도해보는데 후...
쉬운것 같은데 너무 빙 둘러서 생각을 하고 있는 느낌도 드네요.. 

해결될때까지 집에 가긴 그른것 같습니다 ㅠ실력이 안되니 야근하는 날만 늘어가네여 ㅜ 
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호