SwiftUI-Data-Visualization
رسوم بيانية إحصائية ومالية ومباشرة (live) لـ SwiftUI على iOS وmacOS، مبنية على Swift Charts.
الترخيص: 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 ونطاقات متطرفة وتواريخ متطرفة، وترسم كل رسم بياني بها
البدء السريع
1import SwiftUI2import SwiftUIDataVisualization3 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_40010 )11 12 var body: some View {13 TimeSeriesChart(steps)14 .frame(height: 240)15 .padding()16 }17}التثبيت
Swift Package Manager
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
1https://github.com/muhittincamdali/SwiftUI-Data-Visualization.gitلقطات الشاشة
















الجدول الزمني
افتُتح المستودع بعروض bar وpie وscatter وcandlestick
صدر الإصدار 1.0.0؛ ولم تُبنَ مصادره مع إصدارات Xcode الحالية
أُزيلت الوحدات القديمة وقُلِّصت الحزمة إلى placeholder صغير
أُعيد البناء على Swift Charts كـ 2.0.0، ناقلًا الخوارزميات والرسوم البيانية المُختبَرة من SwiftUI-Charts-Pro، التي أُرشفت
2.0.1: تُحدَّد (clamped) القيم المنتهية المتطرفة قبل Swift Charts، وتُرسَم كل الشموع (candles) ذات التاريخ نفسه