جميع حزم المصدر المفتوح
واجهة المستخدمSwift

SwiftUI-Data-Visualization

رسوم بيانية إحصائية ومالية ومباشرة (live) لـ SwiftUI على iOS وmacOS، مبنية على Swift Charts.

7النجومآخر إصدار: v2.0.1آخر تحديث: 15 أكتوبر 2026
الأنظمة الأساسية:iOS 17macOS 14

الترخيص: MIT

حزمة Swift بلا اعتماديات تضم عشر عروض رسوم بيانية — السلاسل الزمنية (time series)، والمدرَّج التكراري (histogram)، وbox plot، وscatter بخط اتجاه (trend line)، وcandlestick، وwaterfall، وheatmap، وradar، وtreemap، وticker مباشر — وأنواع التحليل العامة خلفها: Histogram وBoxPlotSummary وLinearRegression وMovingAverage وNiceScale وTreemapLayout وتصغير العينات (downsampling) بخوارزمية Largest-Triangle-Three-Buckets. تُستثنى القيم المدخلة غير المنتهية (not finite)، وتُرسَم القيم المتطرفة عند حد موثَّق (documented limit)، وتعرض حزمة الاختبارات كل رسم بياني بهذه المدخلات المتطرفة.

الميزات

  • يصغّر TimeSeriesChart كل سلسلة إلى 1,000 نقطة بخوارزمية LTTB، ويرسم المتوسطات المتحركة (moving averages)، ويمرّر عبر نافذة زمنية مرئية، ويُقرّر التاريخ المحدَّد
  • رسوم بيانية إحصائية: HistogramChart (Sturges، وFreedman–Diaconis، وعرض ثابت، أو عدد ثابت)، وBoxPlotChart بـ whiskers من نوع Tukey، وScatterChart بخط اتجاه بالمربعات الصغرى (least-squares)
  • رسوم بيانية مالية: CandlestickChart بـ Candle.aggregate(_:interval:)، وWaterfallChart بالإجماليات (totals)
  • HeatmapChart وRadarChart وTreemapChart بتخطيط squarified؛ يرسم radar وticker بواسطة Canvas، ويرسم treemap بعروض SwiftUI عادية؛ وتُرفِق الثلاثة AudioGraphDescriptor لـ VoiceOver
  • بيانات مباشرة بواسطة RingBuffer وLiveSeries القابل للمراقبة (observable) الذي يغذّي LiveTickerChart
  • طبقة التحليل عامة (public) وSendable، فيمكن استخدامها في Chart خاص بك أو خارج main actor
  • لوحات ألوان (palettes) تُعيَّن عبر .chartPalette(_:)، بما يشمل لوحة أمان لعمى الألوان (color-blind safe)؛ وتُرسِّم ChartExport رسمًا بيانيًا إلى بيانات PNG أو إلى CGImage
  • حزمة اختبارات تُغذّي أنواع التحليل بـ nan وinfinity وInt.max ونطاقات متطرفة وتواريخ متطرفة، وترسم كل رسم بياني بها

البدء السريع

swift
1import SwiftUI
2import SwiftUIDataVisualization
3 
4struct ContentView: View {
5 let steps = TimeSeries(
6 name: "Steps",
7 values: [4_200, 8_100, 6_900, 10_400, 7_800, 12_100, 9_300],
8 start: .now.addingTimeInterval(-6 * 86_400),
9 interval: 86_400
10 )
11 
12 var body: some View {
13 TimeSeriesChart(steps)
14 .frame(height: 240)
15 .padding()
16 }
17}

التثبيت

Swift Package Manager

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/SwiftUI-Data-Visualization.git", from: "2.0.0")
3],
4targets: [
5 .target(name: "YourApp", dependencies: [
6 .product(name: "SwiftUIDataVisualization", package: "SwiftUI-Data-Visualization")
7 ])
8]

Xcode

text
1https://github.com/muhittincamdali/SwiftUI-Data-Visualization.git

لقطات الشاشة

رسم السلاسل الزمنية لخادمين بمتوسطات متحركة متقطعة (dashed)، الوضع الفاتح
رسم السلاسل الزمنية لخادمين بمتوسطات متحركة متقطعة، الوضع الداكن
مدرَّج تكراري لزمن الاستجابة (latency) وbox plot لـ iOS وAndroid، الوضع الفاتح
مدرَّج تكراري لزمن الاستجابة وbox plot لـ iOS وAndroid، الوضع الداكن
رسم scatter للطول والوزن بخط اتجاه، الوضع الفاتح
رسم scatter للطول والوزن بخط اتجاه، الوضع الداكن
رسم candlestick بشموع من ست ساعات ورسم waterfall للأرباح، الوضع الفاتح
رسم candlestick بشموع من ست ساعات ورسم waterfall للأرباح، الوضع الداكن
heatmap لعمليات الـ commit بحسب يوم الأسبوع والساعة مع قيم مطبوعة، الوضع الفاتح
heatmap لعمليات الـ commit بحسب يوم الأسبوع والساعة مع قيم مطبوعة، الوضع الداكن
رسم radar يقارن بين نموذجين وtreemap للتخزين، الوضع الفاتح
رسم radar يقارن بين نموذجين وtreemap للتخزين، الوضع الداكن
شاشة السلاسل الزمنية في تطبيق ChartGallery التوضيحي على محاكي iPhone، الوضع الفاتح
شاشة السلاسل الزمنية في تطبيق ChartGallery التوضيحي على محاكي iPhone، الوضع الداكن
شاشة البيانات المباشرة في تطبيق ChartGallery التوضيحي على محاكي iPhone، الوضع الفاتح
شاشة البيانات المباشرة في تطبيق ChartGallery التوضيحي على محاكي iPhone، الوضع الداكن

الجدول الزمني

  1. افتُتح المستودع بعروض bar وpie وscatter وcandlestick

  2. صدر الإصدار 1.0.0؛ ولم تُبنَ مصادره مع إصدارات Xcode الحالية

  3. أُزيلت الوحدات القديمة وقُلِّصت الحزمة إلى placeholder صغير

  4. أُعيد البناء على Swift Charts كـ 2.0.0، ناقلًا الخوارزميات والرسوم البيانية المُختبَرة من SwiftUI-Charts-Pro، التي أُرشفت

  5. 2.0.1: تُحدَّد (clamped) القيم المنتهية المتطرفة قبل Swift Charts، وتُرسَم كل الشموع (candles) ذات التاريخ نفسه

الروابط

المستودعات المدمجة

مقالة ذات صلة

قراءة المقالة