Open Source

ScatterSharp

대량 센서 데이터를 위한 C#/.NET 산점도 라이브러리입니다. ChartModel의 데이터·스타일·뷰포트를 .chart 파일에 저장하고 복원하며, Python 연동과 별도 Canvas 기반 웹 뷰어도 제공합니다.

Apache License 2.0 · 오픈소스GitHub 저장소

차트 모델에서 저장과 렌더링으로

데이터·스타일·뷰포트를 담은 ChartModel을 저장하고, 네이티브 화면·파일 출력·별도 웹 뷰어에서 활용합니다.

차트 모델에서 저장과 렌더링으로 — 구성 요소와 실행 경계를 보여 주는 도식: 차트 모델 구성 → 상태 저장과 복원 → 표시 범위와 렌더링 → 화면 출력과 상호작용
01 차트 모델 구성 → 02 상태 저장과 복원 → 03 표시 범위와 렌더링 → 04 화면 출력과 상호작용그림을 누르면 원본 크기로 확대할 수 있습니다.
1.차트 모델 구성
ScatterChart API로 시리즈·좌표·축·주석·뷰포트·선택 상태를 구성합니다. 일정 간격 X는 시작값·간격으로 표현하고, 원본 식별자는 PointIds로 연결할 수 있습니다.
2.상태 저장과 복원
ChartSerializer가 manifest.json·chart.json·blobs/*.bin을 .chart ZIP에 기록합니다. 큰 좌표 배열은 바이너리로 저장하며 정밀도와 압축 옵션을 선택할 수 있습니다.
3.표시 범위와 렌더링
ChartRenderer가 레이아웃·스케일을 계산하고 VisibleRange와 MinMax·M4 등의 다운샘플을 적용합니다. IRenderSurface를 통해 시리즈와 오버레이를 그립니다.
4.화면 출력과 상호작용
네이티브 호스트와 PNG·SVG·PDF 출력은 Skia를 사용합니다. 입력은 ChartInteraction으로 전달되며, 웹은 .chart를 해석한 뒤 별도 Canvas2D 엔진으로 표시합니다.

WPF·WinForms·헤드리스 출력은 Skia를 공유합니다. 웹 Canvas는 같은 .chart 형식을 읽는 별도 구현이며, 두 렌더러의 픽셀 단위 동일성을 보장하지 않습니다.

GitHub 문서·코드 확인

Python 데이터에서 웹 차트로

Python이 데이터와 옵션을 준비하면 chartgen이 .chart와 선택적 PNG를 만들고, 웹 예제는 이미지 미리보기에서 대화형 차트로 이어집니다.

Python 데이터에서 웹 차트로 — 구성 요소와 실행 경계를 보여 주는 도식: 시리즈 데이터 준비 → .NET에 데이터 전달 → 두 가지 산출물 생성 → 미리보기 후 탐색
01 시리즈 데이터 준비 → 02 .NET에 데이터 전달 → 03 두 가지 산출물 생성 → 04 미리보기 후 탐색그림을 누르면 원본 크기로 확대할 수 있습니다.
1.시리즈 데이터 준비
NumPy 배열과 차트 옵션을 구성합니다. SQL 조회 결과를 사용할 수도 있지만, Trino·Iceberg 예제 인프라는 차트 라이브러리의 필수 구성 요소가 아닙니다.
2..NET에 데이터 전달
Python 래퍼가 spec.json과 시리즈별 Arrow IPC 파일을 작성하고 chartgen 프로세스를 호출합니다. C#이 컬럼 역할을 해석해 ChartModel을 조립합니다.
3.두 가지 산출물 생성
.chart 패키지를 저장하고 필요하면 Skia PNG도 생성합니다. FastAPI 예제는 imageDataUrl과 별도 파일을 가져올 chartUrl을 응답합니다.
4.미리보기 후 탐색
먼저 PNG를 보여 주고 클릭하면 .chart를 가져옵니다. 브라우저가 ZIP·SCPT 데이터를 해석해 Canvas2D에서 줌·팬·툴팁 상호작용을 처리합니다.

Python·FastAPI·Trino 연동은 선택 구성입니다. 웹 예제의 임시 파일 캐시는 영구 저장소가 아니며, 브라우저는 받은 .chart 데이터를 자체 Canvas 엔진으로 렌더링합니다.

GitHub 문서·코드 확인

시각 예제로 보는 차트 기능

마커·축·어노테이션·통계 표시가 네이티브 차트에 어떻게 적용되는지 보여줍니다.

시각 예제로 보는 차트 기능 — 마커 · 축 · 어노테이션 · 통계
마커·축·어노테이션·통계 표시가 네이티브 차트에 어떻게 적용되는지 보여줍니다.그림을 누르면 원본 크기로 확대할 수 있습니다.
1.마커
모양·버블·색상·이미지로 값을 표현합니다.
2.축
스케일·시간 형식·보조 축·종횡비를 선택합니다.
3.어노테이션
임계선·영역·텍스트·추세선·이동 평균을 추가합니다.
4.통계
밀도 표시와 평균·중앙값·표준편차 밴드를 확인합니다.

예시는 네이티브 기능을 설명합니다. 웹 Canvas 뷰어의 지원 범위는 별도입니다.

GitHub 문서·코드 확인

대규모 차트의 조작·저장·렌더링

네이티브 상호작용과 내보내기 경로를 살펴보고 저장소의 보고 수치를 구분합니다.

대규모 차트의 조작·저장·렌더링 — 상호작용 · 데이터 처리 · 출력 · 성능 해석
네이티브 상호작용과 내보내기 경로를 살펴보고 저장소의 보고 수치를 구분합니다.그림을 누르면 원본 크기로 확대할 수 있습니다.
1.상호작용
확대·선택하고 점 식별자를 호스트 앱으로 전달합니다.
2.데이터 처리
점을 추가하고 계열 표현을 바꾸며 결측값을 처리합니다.
3.출력
차트 상태를 저장하고 네이티브 이미지·벡터 출력을 사용합니다.
4.성능 해석
원본 배열을 유지하며 표시 범위와 그릴 정점을 줄입니다.

네이티브와 웹은 .chart 형식을 공유하며 픽셀 일치를 보장하지 않습니다. 브라우저 SVG/PDF 출력·스트리밍 추가는 현재 웹 지원 범위에 포함되지 않습니다.

GitHub 문서·코드 확인

기능 갤러리

다중 시리즈 · 값-색 매핑 · 밀도 헥스빈 · 보조 Y축 · 시간축 · 선+영역 — 상용 차트 수준의 기능을 하나의 렌더러로 제공합니다.

ScatterSharp 기능 갤러리 — 다중 시리즈, 값-색 매핑, 밀도 헥스빈, 보조 Y축, 시간축, 선+영역

고급 분석 기능

밀도 히트맵/헥스빈 · 선/영역 · 오차막대 · 러버밴드 선택 — 분석 상태까지 저장·복원됩니다.

ScatterSharp 고급 기능 — 밀도 히트맵/헥스빈, 선/영역, 오차막대, 러버밴드 선택

ScatterSharp를 사용해 보세요

Apache License 2.0으로 공개된 오픈소스입니다. GitHub에서 소스와 샘플(10M 벤치·WinForms 데모·기능 쇼케이스)을 확인하실 수 있습니다.