024. Chart

2021. 11. 4. 19:47·사소한 아이의 소소한 스킬/C#
반응형

이번엔 Chart를 써보자......

 

 

일반적인 Line Chart...

 

나는 지금까지 Chart는 Infragistics의 Chart만 써보았지만.... 이게 참...애매한거같아서....

 

그냥 무료 Chart를 한번 써보도록해보자...

 

일단.. Chart를 쓰려면... 기본 프로젝트 생성 후에.........

 

 

NuGet에서 Livechart를 검색해서 설치해주자..!!

 

NuGet은 아래와 같이 Project 에서 우클릭해서 NuGet 패키지 관리를 누르면 나온다.

 

 

설치가 완료되면 준비단계는 끝..!!

 

xaml에서 아래와 같이 입력해주자.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<Window x:Class="TestProject.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
        xmlns:local="clr-namespace:TestProject"
        mc:Ignorable="d"
        Title="MainWindow" Height="217.5" Width="332">
    <Grid>
        <lvc:CartesianChart>
            <lvc:CartesianChart.Series>
                <lvc:LineSeries Values="{Binding Values}" FlowDirection="LeftToRight"/>
            </lvc:CartesianChart.Series>
        </lvc:CartesianChart>
    </Grid>
</Window>
 
Colored by Color Scripter
cs

 

이러면 기본 Grid에 Line Chart를 생성해주는 것이다.

 

code behind는

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.Remoting.Contexts;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
 
using LiveCharts;
using LiveCharts.Defaults;
 
namespace TestProject
{
    /// <summary>
    /// MainWindow.xaml에 대한 상호 작용 논리
    /// </summary>    
    public partial class MainWindow : Window
    {
        public ChartValues<float> Values { get; set; }
 
        private readonly Random _r = new Random();
        private readonly int _delay = 1000;
 
        Queue DataQ = new Queue();
 
        public MainWindow()
        {
            InitializeComponent();
 
            DataContext = this;
 
            Values = new ChartValues<float>();
 
            Sync = new object();
 
            Task.Run(InputData);
 
            Task.Run(ReadData);
        }
 
        public object Sync { get; }
 
 
        private async Task InputData()
        {
            while (true)
            {
                await Task.Delay(500);
 
                lock (Sync)
                {
                    DataQ.Enqueue((float)_r.Next(0, 100));
                }
            }
        }
 
        private async Task ReadData()
        {
            await Task.Delay(1000);
 
            while (true)
            {
                await Task.Delay(_delay);
                lock (Sync)
                {
                    if (DataQ.Count > 0)
                    {
                        Values.Add((float)DataQ.Dequeue());
                    }
                }
            }
        }
    }
}
 
Colored by Color Scripter
cs

 

코드가 아주 조금 길긴하지만.. 뭐 없다.

 

Task를 2개 만들어주고 1개의 Task는 데이터를 계속 입력. 1개의 Task는 데이터를 계속 출력

 

출력한놈에서는 Values라는 바인딩된 데이터에 값을 넣어줌으로써 그래프가 계속 그려지도록....!!

 

이렇게 해주면

 

 

이렇게 랜덤데이터들이 표출된다..!!

 

챠트에 대한 옵션들은 이렇게 기본적인 라인챠트도 있고

 

Bar, Step, Stack, Pie, Scatter, Financial, Heat 등 여러가지가 있다.

 

거기에 맞추어 Series를 만들고 진행하면 크게 어려움을 없을 것으로 판단된다..

 

그리하여 자세한 샘플은 없음...

 

기본적인 Storke 색상 변경등도 어렵지않게 수정할 수 있을 거기에....

 

내 예제처럼 Thread를 통해서 데이터를 넣고 표출하고를 수행한다면 추후는 커스터마이징이라고 생각함....

 

해보다가 모르겠으면 물어보세요..!!

 

예제파일은 요기

TestProject.zip
2.15MB

 

아 그리고 더 자세한 LiveChart의 정보를 얻으려면 여기로..!

(https://github.com/beto-rodriguez/LiveCharts2)

반응형
'사소한 아이의 소소한 스킬/C#' 카테고리의 다른 글
  • 027. 압축설정/압축해제
  • 025.Thread/Task
  • 023. String Operator
  • 021. Multi Trigger
JOOJI
JOOJI
그냥 혼자좋아하는 것들 남기는 블로그....
  • JOOJI
    사소한프로그래머의 소소한행복
    JOOJI
  • 전체
    오늘
    어제
    • 분류 전체보기 (951) N
      • 사소한 아이의 소소한 일상 (245)
      • 사소한 아이의 소소한 먹거리 (43)
      • 사소한 아이의 소소한 정보 (75) N
      • 사소한 아이의 소소한 감사 (4)
      • 사소한 아이의 소소한 운동 (53) N
      • 사소한 아이의 소소한 여행 (40)
        • 2013_전주 (1)
        • 2014_독일 (13)
        • 2014_군산 (1)
        • 2015_제주도 (3)
        • 2015_서울모토쇼 (3)
        • 2015_진해 (1)
        • 2015_전주 (1)
        • 2016_여수 (1)
        • 2020_강릉 (1)
        • 2022_제주도 (4)
      • 사소한 아이의 소소한 강짱 (22)
        • 하트투하트 (10)
        • MAPS (1)
        • 화려한 유혹 (2)
        • 한여름의 추억 (2)
      • 사소한 아이의 TV (50)
        • Drama (9)
        • 예능 (32)
        • 사소한 아이의 다현 (9)
      • 사소한 아이의 소소한 스킬 (130)
        • Scaleform (2)
        • C# (74)
        • QT (3)
        • 알고리즘 (4)
        • Python (21)
        • PyQT5 (9)
        • C_C++ (2)
      • 사소한 아이의 소소한 축구 (283)
        • Korea (25)
        • Germany (45)
        • Bayern Munich (64)
        • Soccer_ETC (75)
        • Euro 2016 (12)
        • 친선경기 (3)
      • 사소한 아이의 소소한 생활정보 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
    • 관리
  • 링크

    • 독일여행
    • 레바티스토리
    • 프라치노 공간
    • 남성패션꿀템 블로그
  • 공지사항

  • 인기 글

  • 태그

    분데스리가
    독일
    문제
    뮌헨
    회사밥
    WPF
    python
    바이에른 뮌헨
    러닝
    c#
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JOOJI
024. Chart
상단으로

티스토리툴바