ÇSTech
Published in

ÇSTech

Bir Dakikada Chart Oluşturma

WWDC22: iOS 16 SwiftUI ile Chart Oluşturun

WWDC 2022 ses getiren en büyük eklentilerinden biri Chart Frameworks Apple tarafından inanılmaz grafikler oluşturmamızı sağlayan kütüphanedir.

“Bir resim bin sözcüğe bedeldir” cümlesinden anlayacağımız gibi bizim için neyin önemli neyin önemli olmadığını anlamak görseller, analizi daha kolay ve hızlı hale getirir.

Adım adım size nasıl kullanılmaya başlayacağınızı göstereceğim. Kendiniz uygulamak isterseniz MacOS Monterey 12.4, Xcode 14 ve iOS 16 minimum versiyona sahip olmanız gerekli.

Marks & Properties

Bu makalede veriyi görselleştirmek için Bar, Point, Line Marks üzerinden anlatılacaktır.

Çiçek satıyorsunuz gün sonunda hangi çiçekten ne kadar sattığınızı görmek istiyorsunuz.

Grafik eklemek istediğiniz dosyanın en üstüne import Charts kütüphanesini ekleyelim. Tasarımda eklemek istediğiniz yere Chart view oluşturun. Görselleştirmek içinde BarMark view ekleyin.

Flowers Struct oluşturduk name, sales ve id property bulunmakta. id eklememizin nedeni her modelin unique olması gerekliliğidir. Satırları tek tek eklemek yerine sales listesi oluşturduk bu sayede sales sayısı kadar BarMark oluşturulacaktır. BarMark bizden x ve y değerlerini .value olarak ekledik.

Yukarıda gördüğünüz gibi grafik oluştu. Dikey gösterim istersek x ve y deki .value yer değiştirmemiz yeterli olacaktır.

Ankara ve İstanbul ‘daki şubenizde haftalık hangi üründen ne kadar satılmış karşılaştırmak istediğinizde her iki şehrin veri setini oluşturalım. Oluşturduğumuz veri setlerini Series modeli ile liste haline getirelim.

BarMark — PointMark — LineMark

50. Satırda grafik gösterimini sırası ile BarMark — PointMark — LineMark kullandığımızda görseller ektedir.

54.Satırda .foregroundStyle şehir adını sol alta ekleyebiliriz. Her satır veya sütun için .foregroundStyle(by: .value(“Shape Color”, Color.blue)) şeklinde renklendirme yapabiliriz.

55.Satırda .interpolationMethod(.catmullRom) LineMark ile kullandığımızda kırık çizgileri ovalleştiririz.

Chart(seriesData) { series in   ForEach(series.sales) { element in     LineMark(       x: .value(“Day”, element.weekday),       y: .value(“Sales”, element.sales)      )       .foregroundStyle(by: .value(“City”, series.city))      .symbol(by: .value(“City”, series.city))  }}.padding()

Hangi gün kaç ürün satıldığını yatay ve dikey eksendeki kesişimindeki yuvarlay noktayı .symbol gösterir.

İstanbul ve Ankara veri setini tek Chart üzerinden göstermek yerine. Segmented Picker kullarak data oluşturarak binding gerçekleştirdik. Bu sayede her tıklamada veri seti data değişecek grafik güncellenecektir.

BarMark, LineMark, RuleMark bir arada kullanarak Chart üzerinde gösterimi.

Light & Dark Mode görünümü

Bonus örneğimizde diğer örneklerde Chart view sales listesini ekleyerek gösterimini sağlamıştık. Birden fazla mark kullanmayı öğreneceğiz. Bu örnekte Chart içine ForEach kullanarak gösterimini gerçekleştirdik.

Sırayla anlatacak olursak 27. satırda BarMark ekledik her sütunun rengini listedeki color’dan belirledik çizgi kalınlıgını .lineStyle belirledik. Her sütünun başındaki yazı için .annotation kullandık.

37. satırda LineMark kullandık BarMark’dan farklı olarak .interpolation kullandık grafiği oval olmasını sağladık.

45. satırda RuleMark kullandık eşik değeri belirledik ve rengini kırmızı yaptık. Satışı 40'dan az ve fazla olan ürünleri ayırt edebiliyoruz.

Chartımızı tamamladığımıza göre görünümünü düzenleyelim. .chartForegroundStyleScale ile veri setimizdeki her ürünün rengini ve yazısını belirleyebiliyoruz. .chartYScale ile dikey eksende değeri 0 ie 150 arası olarak belirledik. .chartPlatStyle ile arka plan rengini ve çerçeve rengini belirlemiş olduk. .chartXAxis grafiğin x eksenindeki yazıları gizlemiş olduk.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store