Microsoft MVP성태의 닷넷 이야기
.NET Framework: 587. C# Plotting 라이브러리 OxyPlot [링크 복사], [링크+제목 복사],
조회: 32171
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
(연관된 글이 3개 있습니다.)

C# Plotting 라이브러리 OxyPlot

OxyPlot은 C#에서 사용할 수 있는 Plot 라이브러리로써 WPF/Windows Forms/Phone/Mono 등의 다양한 환경을 지원합니다.

OxyPlot
; https://github.com/oxyplot/oxyplot

Nuget을 통해 설치하는 것도 쉬운데요, 다음은 Windows Forms 용 설치 명령어입니다.

Install-Package OxyPlot.WindowsForms -Pre 

설치 후 다음의 글에 따라 비주얼 스튜디오 도구상자에 컨트롤을 추가할 수 있습니다.

OxyPlot 라이브러리의 컨트롤을 Toolbox에 등록 시 오류
; https://www.sysnet.pe.kr/2/0/10970

그럼 디자인 화면에서 PlotView 컨트롤을 쉽게 Form 화면에 끌어다 놓을 수 있고 다음과 같이 코딩을 해주면,

using System;
using OxyPlot;
using OxyPlot.Axes;
using OxyPlot.Series;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        PlotModel _pm = new PlotModel();

        public Form1()
        {
            InitializeComponent();
        }

        void InitializePlotView(PlotModel pm)
        {
            var axesX = new LinearAxis();
            axesX.Position = AxisPosition.Bottom;
            axesX.AxislineStyle = LineStyle.Solid;
            axesX.PositionAtZeroCrossing = true;

            axesX.Maximum = 50;
            axesX.Minimum = -10;

            axesX.MajorGridlineStyle = LineStyle.Dash;
            axesX.MinorGridlineStyle = LineStyle.Dot;

            var axesY = new LinearAxis();
            axesY.Position = AxisPosition.Left;
            axesY.AxislineStyle = LineStyle.Solid;
            axesY.PositionAtZeroCrossing = true;

            axesY.Maximum = 50;
            axesY.Minimum = -10;

            axesY.MajorGridlineStyle = LineStyle.Dash;
            axesY.MinorGridlineStyle = LineStyle.Dot;

            pm.Axes.Add(axesX);
            pm.Axes.Add(axesY);

            plotView.Model = pm;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            InitializePlotView(_pm);

            ScatterSeries series = new ScatterSeries();

            series.Points.Add(new ScatterPoint(10, 20));
            series.Points.Add(new ScatterPoint(20, 30));
            series.Points.Add(new ScatterPoint(30, 40));
            series.MarkerType = MarkerType.Circle;

            _pm.Series.Add(series);
        }
    }
}

이런 화면을 볼 수 있습니다.

oxyplot_basic_1.png

(첨부 파일은 이 글의 예제 코드를 포함합니다.)




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 5/20/2016]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2019-05-22 11시10분
C# - PLplot 사용 예제
; http://www.sysnet.pe.kr/2/0/11909
정성태
2021-03-12 09시39분
정성태
2022-03-02 11시31분
정성태

... 91  92  [93]  94  95  96  97  98  99  100  101  102  103  104  105  ...
NoWriterDateCnt.TitleFile(s)
11702정성태9/26/201820233사물인터넷: 44. 넷두이노(Netduino)의 네트워크 설정 방법
11701정성태9/26/201826132개발 환경 구성: 397. 공유기를 일반 허브로 활용하는 방법파일 다운로드1
11700정성태9/21/201826085Graphics: 25. Unity - shader의 직교 투영(Orthographic projection) 행렬(UNITY_MATRIX_P)을 수작업으로 구성
11699정성태9/21/201824062오류 유형: 488. Add-AzureAccount 실행 시 "No subscriptions are associated with the logged in account in Azure Service Management (RDFE)." 오류
11698정성태9/21/201825074오류 유형: 487. 윈도우 성능 데이터를 원격 SQL에 저장하는 경우 "Call to SQLAllocConnect failed with %1." 오류 발생
11697정성태9/20/201821833Graphics: 24. Unity - unity_CameraWorldClipPlanes 내장 변수 의미
11696정성태9/19/201824674.NET Framework: 793. C# - REST API를 이용해 NuGet 저장소 제어파일 다운로드1
11695정성태9/19/201830631Graphics: 23. Unity - shader의 원근 투영(Perspective projection) 행렬(UNITY_MATRIX_P)을 수작업으로 구성
11694정성태9/17/201824178오류 유형: 486. nuget push 호출 시 405 Method Not Allowed 오류 발생
11693정성태9/16/201825937VS.NET IDE: 128. Unity - shader 코드 디버깅 방법
11692정성태9/13/201826933Graphics: 22. Unity - shader의 Camera matrix(UNITY_MATRIX_V)를 수작업으로 구성
11691정성태9/13/201823052VS.NET IDE: 127. Visual C++ / x64 환경에서 inline-assembly를 매크로 어셈블리로 대체하는 방법 - 두 번째 이야기
11690정성태9/13/201826472사물인터넷: 43. 555 타이머의 단안정 모드파일 다운로드1
11689정성태9/13/201825418VS.NET IDE: 126. 디컴파일된 소스에 탐색을 사용하도록 설정(Enable navigation to decompiled sources)
11688정성태9/11/201820105오류 유형: 485. iisreset - The data is invalid. (2147942413, 8007000d) 오류 발생
11687정성태9/11/201824213사물인터넷: 42. 사물인터넷 - 트랜지스터 다중 전압 테스트파일 다운로드1
11686정성태9/8/201823044사물인터넷: 41. 다중 전원의 소스를 가진 회로파일 다운로드1
11685정성태9/6/201822902사물인터넷: 40. 이어폰 소리를 capacitor로 필터링파일 다운로드1
11684정성태9/6/201825647개발 환경 구성: 396. pagefile.sys를 비활성화시켰는데도 working set 메모리가 줄어드는 이유파일 다운로드1
11683정성태9/5/201823659개발 환경 구성: 395. Azure Web App의 이벤트 로그를 확인하는 방법
11682정성태9/5/201822579오류 유형: 484. Fakes를 포함한 단위 테스트 프로젝트를 빌드 시 CS1729 관련 오류 발생
11681정성태9/5/201825080Windows: 149. 다른 컴퓨터의 윈도우 이벤트 로그를 구독하는 방법 [2]
11680정성태9/2/201826987Graphics: 21. shader - _Time 내장 변수를 이용한 UV 변동 효과파일 다운로드1
11679정성태8/30/201825235.NET Framework: 792. C# COM 서버가 제공하는 COM 이벤트를 C++에서 받는 방법 [1]파일 다운로드1
11678정성태8/29/201823542오류 유형: 483. 닷넷 - System.InvalidProgramException [1]
11677정성태8/29/201820955오류 유형: 482. TFS - Could not find a part of the path '...\packages\Microsoft.AspNet.WebApi.5.2.5\.signature.p7s'.
... 91  92  [93]  94  95  96  97  98  99  100  101  102  103  104  105  ...