ScatterSharp
대량 센서 데이터를 위한 C#/.NET 산점도 라이브러리입니다. ChartModel의 데이터·스타일·뷰포트를 .chart 파일에 저장하고 복원하며, Python 연동과 별도 Canvas 기반 웹 뷰어도 제공합니다.
차트 모델에서 저장과 렌더링으로
데이터·스타일·뷰포트를 담은 ChartModel을 저장하고, 네이티브 화면·파일 출력·별도 웹 뷰어에서 활용합니다.

- 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를 만들고, 웹 예제는 이미지 미리보기에서 대화형 차트로 이어집니다.

- 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를 사용해 보세요
Apache License 2.0으로 공개된 오픈소스입니다. GitHub에서 소스와 샘플(10M 벤치·WinForms 데모·기능 쇼케이스)을 확인하실 수 있습니다.