Area Chart
Bir kez verilen satırlardan bir alan grafiği: onlardan okunan values'ın her biri için bir çizgi, çizgiyle sıfırın arası doldurularak.
import com.pantrixui.components.chart.area.PantrixAreaChart
- Dolgu.
fillçizginin altını neyin doldurduğunu söyler:Gradientserinin renginin çizgiden sıfıra doğru solmasıdır,Solidrengin düz bir tonu. - Sıfır. Alan grafiğinin değer ekseni sıfırdan başlar: bir alanın yüksekliği miktar olarak okunur ve sıfırın üstünden kesilen bir alan olduğundan azını gösterir. Eksen
startFromZero = falseile başka türlü söyleyebilir. Sıfırın altına inen değerlerde alan sıfır çizgisinden aşağı dolar. - Üst üste alanlar. Her alan bir öncekinin üstüne ve hepsi sıfırdan çizilir: sonraki seri, daha büyük olduğu yerde öncekini örter. Solan dolgu alttakini gösterir; büyük seriyi önce ver.
- Yığılı alanlar.
stackedile her alan bir öncekinin üstünde durur ve en üstteki çizgi toplamdır: bir bütünün parçaları böyle gösterilir. Tooltip her serinin kendi değerini, ardından da toplamı yazar.stacking = ChartStacking.Percentile her yerin toplamı yüzde yüz sayılır ve alanlar payları gösterir. - Çizgi.
curve,missingve bir serinindash'i ilemarker'ı çizgi grafiğindeki gibidir. - Otomasyon. Grafik, olduğu
PantrixChartgibi etiketlenir:Chart_<tagKey>.
Örnekler
Tek bir miktar
Tek bir miktar, aylar boyunca: çizgi yumuşak geçiyor ve altı, rengi sıfıra doğru solarak doluyor. Değer ekseni kendiliğinden sıfırdan başlar; değerleri kısa yazılıyor (format).
Tek serili grafiğin lejantı yoktur: çizginin ne olduğu grafiğin çevresindeki yazıya aittir.
val strings = PantrixTheme.strings
PantrixAreaChart(
data = STORAGE,
x = { it.month },
values = listOf(ChartValue("used", "Kullanılan alan") { it.used }),
curve = ChartCurve.Smooth,
yAxis = ChartAxis(format = { "${strings.decimal(it)} GB" }),
description = "Aylara göre kullanılan depolama alanı",
tagKey = "plain"
)
private data class Storage(
val month: String,
val used: Int,
val backups: Int
)
private val STORAGE = listOf(
Storage("Oca", used = 120, backups = 40),
Storage("Şub", used = 138, backups = 46),
Storage("Mar", used = 151, backups = 52),
Storage("Nis", used = 149, backups = 61),
Storage("May", used = 176, backups = 64),
Storage("Haz", used = 203, backups = 72),
Storage("Tem", used = 221, backups = 85),
Storage("Ağu", used = 214, backups = 91),
Storage("Eyl", used = 252, backups = 96),
Storage("Eki", used = 281, backups = 110),
Storage("Kas", used = 305, backups = 124),
Storage("Ara", used = 342, backups = 131)
)
İki miktar, iki dolgu
İki miktar, büyüğü önce verilerek. Gradient ile her alan çizgisinden sıfıra doğru solar ve alttaki alan üsttekinin içinden görünür; Solid ile dolgu düz bir tondur. Anahtarı çevir, ikisini karşılaştır.
var solid by remember { mutableStateOf(false) }
PantrixSwitchButton(
checked = solid,
onCheckedChange = { solid = it },
label = "Düz dolgu",
tagKey = "area_solid"
)
PantrixAreaChart(
data = STORAGE,
x = { it.month },
values = listOf(
ChartValue("used", "Kullanılan alan") { it.used },
ChartValue("backups", "Yedekler") { it.backups }
),
curve = ChartCurve.Smooth,
fill = if (solid) ChartFill.Solid else ChartFill.Gradient,
description = "Aylara göre kullanılan alan ve yedekler",
tagKey = "fills"
)
private data class Storage(
val month: String,
val used: Int,
val backups: Int
)
private val STORAGE = listOf(
Storage("Oca", used = 120, backups = 40),
Storage("Şub", used = 138, backups = 46),
Storage("Mar", used = 151, backups = 52),
Storage("Nis", used = 149, backups = 61),
Storage("May", used = 176, backups = 64),
Storage("Haz", used = 203, backups = 72),
Storage("Tem", used = 221, backups = 85),
Storage("Ağu", used = 214, backups = 91),
Storage("Eyl", used = 252, backups = 96),
Storage("Eki", used = 281, backups = 110),
Storage("Kas", used = 305, backups = 124),
Storage("Ara", used = 342, backups = 131)
)
Sıfırın altına inen değerler
Sıfırın iki yanında değerler: bir ayın kârı ya da zararı. Alan her zaman sıfıra doğru dolar: kârda aşağı, zararda yukarı. Sıfırda bir çizgi çizilir ve solan dolgu sıfırın iki yanında da en uzak noktada en güçlüdür.
val strings = PantrixTheme.strings
PantrixAreaChart(
data = PROFIT,
x = { it.first },
values = listOf(ChartValue("profit", "Kâr") { it.second }),
yAxis = ChartAxis(format = { strings.compact(it) }),
description = "Aylara göre kâr ve zarar",
tagKey = "below_zero"
)
private val PROFIT = listOf(
"Oca" to 84_000,
"Şub" to 52_000,
"Mar" to 21_000,
"Nis" to -18_000,
"May" to -46_000,
"Haz" to -31_000,
"Tem" to 9_000,
"Ağu" to 38_000,
"Eyl" to 67_000,
"Eki" to 95_000,
"Kas" to 112_000,
"Ara" to 140_000
)
Basamaklı bir alan
Değişene kadar yerinde duran bir değer: bir deponun stoku. StepAfter her değeri bir sonrakine kadar düz taşır ve dolgu basamakların altını doldurur.
PantrixAreaChart(
data = STOCK,
x = { it.first },
values = listOf(ChartValue("stock", "Stok") { it.second }),
curve = ChartCurve.StepAfter,
fill = ChartFill.Solid,
description = "Haftalara göre depodaki stok",
tagKey = "stepped"
)
private val STOCK = listOf(
"1. hafta" to 480,
"2. hafta" to 480,
"3. hafta" to 310,
"4. hafta" to 310,
"5. hafta" to 640,
"6. hafta" to 520,
"7. hafta" to 520,
"8. hafta" to 270
)
Yığılı alanlar
Bir bütünün parçaları: üç kaynaktan gelen ziyaret, üst üste (stacked). Her alan altındakinin çizgisinden başlar ve en üstteki çizgi toplam ziyarettir. Dolgu düz bir ton: yığında hangi alanın nerede bittiği böyle okunur. Tooltip kaynakların ardından ayın toplamını yazar.
Anahtarı çevir: her ay yüzde yüz sayılır (stacking = ChartStacking.Percent). Alanlar artık kaynakların payıdır, eksen yüzde yazar; tooltip her değerin yanına payını ekler.
Lejanttaki bir ada bas: kaynak çıkar ve üstündekiler onun yerine iner.
var shares by remember { mutableStateOf(false) }
PantrixSwitchButton(
checked = shares,
onCheckedChange = { shares = it },
label = "Paylar olarak",
tagKey = "area_shares"
)
PantrixAreaChart(
data = SOURCES,
x = { it.month },
values = listOf(
ChartValue("search", "Arama") { it.search },
ChartValue("direct", "Doğrudan") { it.direct },
ChartValue("social", "Sosyal") { it.social }
),
fill = ChartFill.Solid,
stacked = true,
stacking = if (shares) ChartStacking.Percent else ChartStacking.Normal,
description = "Aylara göre üç kaynaktan gelen ziyaret, üst üste",
tagKey = "stacked"
)
private data class Sources(
val month: String,
val search: Int,
val direct: Int,
val social: Int
)
private val SOURCES = listOf(
Sources("Oca", search = 420, direct = 240, social = 130),
Sources("Şub", search = 480, direct = 260, social = 120),
Sources("Mar", search = 455, direct = 300, social = 165),
Sources("Nis", search = 530, direct = 280, social = 190),
Sources("May", search = 510, direct = 330, social = 240),
Sources("Haz", search = 560, direct = 310, social = 285)
)
API
data
Bir kez verilen satırlardan bir alan grafiği: onlardan okunan values'ın her biri için bir çizgi, çizgiyle sıfırın arası doldurularak.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
data | List<T> | satırlar, çizgilerin onlardan geçtiği sırayla. | |
x | (T) -> Any | bir satırın grafik boyunca nerede durduğu: bir ad, bir gün, kendisine eşit olan herhangi bir şey. | |
values | List<ChartValue<T>> | seriler: her birinin bir satırdan ne okuduğu, nasıl adlandırıldığı ve çizildiği. | |
modifier | Modifier | Modifier | grafiğin modifier'ı. Buradaki bir yükseklik grafiğindir, lejantınki de içinde. |
curve | ChartCurve | ChartCurve.Linear | her çizginin bir noktadan ötekine nasıl gittiği. |
fill | ChartFill | ChartFill.Gradient | her çizginin altını neyin doldurduğu: sıfıra doğru solan rengi ya da renginin bir tonu. |
missing | ChartMissing | ChartMissing.Gap | değeri olmayan bir satırda bir çizginin ne yaptığı. |
stacked | Boolean | false | her alanın sıfırın üstünde değil, values'ın sırasıyla bir öncekinin üstünde durup durmadığı. |
stacking | ChartStacking | ChartStacking.Normal | yığılı alanların birbirinin üstünde nasıl durduğu: değerleri olarak ya da yığından aldıkları paylar olarak. stacked olmayan alanların buna göre duracak bir yığını yoktur. |
labels | ChartDataLabels? | null | değerler, yerleri olduğunda, her çizginin noktalarının üstüne yazılır. null hiçbirini yazmaz. |
xAxis | ChartAxis? | ChartAxis() | yerlerin ekseni, grafiğin altında. null ondan hiçbir şey çizmez. |
yAxis | ChartAxis? | ChartAxis() | değerlerin ekseni, grafiğin yanında. null ondan hiçbir şey çizmez. |
secondYAxis | ChartAxis? | ChartAxis() | grafiğin öbür yanındaki ikinci değer ekseni: bir değer onunla okunuyorsa çizilir (ChartValue.axis), okunmuyorsa çizilmez. null ondan hiçbir şey çizmez. |
marks | List<ChartMark> | emptyList() | serilerin yanında çizim alanına çizilen çizgiler ve bantlar: bir hedef, bir sınır, bir dizi yer. |
legend | ChartLegend? | ChartLegend() | serilerin adlarının durduğu yer. null hiç göstermez. |
tooltip | ChartTooltip? | ChartTooltip() | gösterilen yer için gösterilen şey. null hiç göstermez. |
zoom | ChartZoom? | null | okuyucunun yerlerin bir kısmına yakından bakmasını ve geri kalanı boyunca kaydırmasını sağlayan şey. Grafiğe verilmedikçe null'dır; null bütün yerleri gösterir, başka bir şey yapmaz. |
decimation | ChartDecimation? | ChartDecimation() | görünen noktaları çizim alanının yer bulduğundan çok olan bir çizginin, onların daha azından nasıl çizileceği. null her noktayı, kaç tane olursa olsun, çizer. |
export | ChartExport? | null | okuyucunun grafiği uygulamadan bir dosya olarak çıkarmasını sağlayan şey: bir resim, ya da her boyutta keskin bir çizim. Grafiğe verilmedikçe null'dır, ve grafiğin böyle bir düğmesi olmaz. |
empty | (@Composable () -> Unit)? | null | grafiğin çizecek değeri yokken çizim alanında gösterdiği şey: temanın bunun için yazdığı sözün ("Veri yok") yerine; o zaman ekran okuyucuya da o söz söylenmez. null sözü yazar. Grafiğin dışa aktarıldığı dosya sözü yazar. |
state | ChartState | rememberChartState() | okuyucunun gizledikleri ve gösterdiği yer: verilmezse grafiğin kendisininki. |
description | String? | null | grafiğin ne gösterdiği, birkaç sözcükle, ekran okuyucu için. |
onSelect | ((ChartPoint) -> Unit)? | null | basılan değerle çağrılır. |
style | ChartStyle? | null | bu grafiğin kendi geometrisi. |
colors | ChartColors? | null | bu grafiğin kendi renkleri, temanınkiler olmadıkları yerde. |
tagKey | String? | null | grafiğin otomasyon anahtarı. Grafik, olduğu PantrixChart gibi etiketlenir, Chart_<tagKey>, ve parçaları ile olayları o grafiğinkilerdir. |
ChartStyle
Bir grafiğin geometrisi: hiçbir şey söylemediğinde ne kadar yüksek olduğu, çizgilerinin ne kadar kalın, işaretlerinin ne kadar büyük olduğu ve parçalarının arasındaki boşluk; ve dolgularının renklerinin yanında desen alıp almadığı.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
height | Dp | Dp.Unspecified | Grafiğin modifier'ı ona bir yükseklik vermediğinde çizim alanının, eksenleriyle birlikte, ne kadar yüksek olduğu. Çizim alanının üstündeki ya da altındaki bir lejant kendi yüksekliğini ekler. |
lineWidth | Dp | Dp.Unspecified | Bir serinin çizgisinin kalınlığı. |
markerSize | Dp | Dp.Unspecified | Bir noktadaki işaretin genişliği ve yüksekliği. |
selectedMarkerSize | Dp | Dp.Unspecified | Aynısı, gösterilen noktadaki işaret için. |
gridWidth | Dp | Dp.Unspecified | Kılavuz çizgilerinin, eksenler boyunca çizilen çizgilerin ve gösterilen yeri işaretleyen çizginin kalınlığı. Sıfır hiçbirini çizmez. |
labelGap | Dp | Dp.Unspecified | Çizim alanıyla yanına ve altına yazılanın arası, ve onunla bir eksenin başlığının arası. |
tickSpacing | Dp | Dp.Unspecified | Değerlerin ekseni boyunca işaretlenen iki değerin arasındaki en az boşluk: eksen söylemediğinde kaç tanesinin işaretleneceğine karar veren şey. |
legendGap | Dp | Dp.Unspecified | Lejantla yanında durduğu grafiğin arası. |
legendItemGap | Dp | Dp.Unspecified | Lejantın bir kaydıyla sonrakinin arası. |
swatchSize | Dp | Dp.Unspecified | Bir serinin lejanttaki ve tooltip'teki örneğinin ne kadar geniş olduğu: çizgisinin kısa bir parçası ya da dolgusunun bir yaması. |
swatchGap | Dp | Dp.Unspecified | O örnekle ardındaki adın arası. |
tooltipShape | ShapeSpec | ShapeSpec.Unspecified | Tooltip'in köşeleri: markanın şekil ölçeğinin bir basamağı ya da sabit bir şekil. |
tooltipHorizontalPadding | Dp | Dp.Unspecified | Tooltip'in yanlarıyla içindekinin arası. |
tooltipVerticalPadding | Dp | Dp.Unspecified | Üstü ve altıyla içindekinin arası, ve başlığıyla satırlarının arası. |
tooltipGap | Dp | Dp.Unspecified | Gösterilen yerle yanındaki tooltip'in arası. |
tooltipElevation | Dp | Dp.Unspecified | Tooltip'in gölgesi. |
barGap | Dp | Dp.Unspecified | Bir yerde yan yana duran iki çubuğun arası. Bunun için fazla ince olan çubuklar daha yakın durur. |
barMaxWidth | Dp | Dp.Unspecified | Bir çubuğun en fazla ne kadar geniş olduğu, yerinin ne kadar yeri olursa olsun: üç yerli bir grafik üç kalas değildir. |
barRadius | Dp | Dp.Unspecified | Bir çubuğun ucunun, sıfırdan uzak ucunun, köşelerinin ne kadar yuvarlak olduğu. |
sliceGap | Dp | Dp.Unspecified | Bir pastanın yan yana duran iki dilimi arasında; pastanın ortasından kenarına kadar aynı genişlikte. |
selectedSliceOffset | Dp | Dp.Unspecified | Bir pastanın gösterilen diliminin, pastanın kenarından ne kadar dışarı taştığı. Pasta çevresinde bu kadar yer bırakır: dilimin duracağı yer olsun. |
gaugeWidth | Dp | Dp.Unspecified | Bir göstergenin yayının kalınlığı. Bir yay, yarıçapının yarısından kalın olmaz. |
meterHeight | Dp | Dp.Unspecified | Bir ölçüm grubunun çubuğunun yüksekliği. |
trackerHeight | Dp | Dp.Unspecified | Bir durum izleyicinin bloklarının yüksekliği. |
bubbleMinSize | Dp | Dp.Unspecified | Bir saçılım grafiğinin en küçük balonunun genişliği: büyüklüğü hiç olmayan ya da bir alan olarak görülemeyecek kadar az olan nokta da bir noktadır. |
bubbleMaxSize | Dp | Dp.Unspecified | En büyük balonunun genişliği: büyüklüğü grafiğin en büyüğü olanın. |
navigatorHeight | Dp | Dp.Unspecified | Zoom'unda gezgin şeridi olan bir grafikte, çizim alanının altındaki şeridin yüksekliği: grafiğin görünen kısmı onun üstünde işaretlenir ve kaydırılır. Yerleri yanından aşağı dizilen grafikte şerit çizim alanının yanında durur ve bu onun genişliğidir. |
barBandShare | Float | Float.NaN | Bir yerin çubuklarının bandından aldığı pay, sıfırdan çok ve en fazla bir: kalanı bir yerin çubuklarıyla sonrakininkiler arasındaki boşluktur. Çubuklar yine de barMaxWidth'ten geniş olmaz. |
markLineWidth | Dp | Dp.Unspecified | Bir işaretin çizgisinin kalınlığı: bir hedefin, bir sınırın, bir günün. Sıfır çizgi çizmez; işaretin yazısı yine yazılır. |
markBandAlpha | Float | Float.NaN | Bir işaretin bandının renginin ne kadarıyla çizildiği, sıfırdan bire: bant serilerin arkasında durur ve bir tondur. |
patterns | Boolean? | null | Bir grafiğin serilerinin, dilimlerinin ve karolarının dolgularının renklerinin yanında desenlerle, çizgilerinin de sırayla kesik çizilip çizilmediği (ChartPattern): renkleri ayırt edemeyen bir okuyucu için onları ayıran şey. Verilmezse sistemin ayarına uyulur: sistem şeyleri renksiz ayırt etmeye ayarlıysa açık (iOS'ta "Differentiate Without Color", Android'de renk düzeltme), değilse kapalı. |
nodeWidth | Dp | Dp.Unspecified | Bir sankey düğümünün ne kadar geniş olduğu. |
nodeGap | Dp | Dp.Unspecified | Bir sankey kolonunun iki düğümü arası. |
ChartColors
Temanın renklerini almayan bir grafik için, onun neyle boyandığı: verilen renk kullanılır, verilmeyen temanınki kalır.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
series | List<Color> | emptyList() | Serilerin çizildiği renkler, dağıtıldıkları sırayla, kendi rengini söylemeyen seriler için. Boşsa temanın grafik renkleridir. |
grid | Color | Color.Unspecified | Bir eksenin işaretlerinde grafik boyunca çizilen çizgiler. Temanın divider'ı. |
axis | Color | Color.Unspecified | Bir eksen boyunca çizilen çizgi. Temanın border'ı. |
label | Color | Color.Unspecified | Eksenlerin yanına yazılanlar: değerler, yerler ve eksenlerin başlıkları, bir de lejanttaki adlar. Temanın textSecondary'si. |
crosshair | Color | Color.Unspecified | Gösterilen yeri işaretleyen çizgi. Temanın borderHover'ı: içinden geçtiği kılavuz çizgilerinden güçlü, arkasında durduğu serilerden sessiz. |
tooltipContainer | Color | Color.Unspecified | Tooltip'in dolgusu. Temanın surface'i. |
tooltipBorder | Color | Color.Unspecified | Tooltip'in kenarı. Temanın border'ı. |
tooltipText | Color | Color.Unspecified | Tooltip'in başlığı ve değerleri. Temanın textPrimary'si. |
tooltipLabel | Color | Color.Unspecified | Tooltip'teki seri adları. Temanın textSecondary'si. |
rising | Color | Color.Unspecified | Yukarı giden bir değerin çizildiği renk: bir şelalenin ekleyen adımı. Temanın success'i. |
falling | Color | Color.Unspecified | Aşağı giden bir değerin çizildiği renk: bir şelalenin götüren adımı. Temanın danger'ı. |