Line Chart
Bir kez verilen satırlardan bir çizgi grafiği: onlardan okunan values'ın her biri için bir çizgi, x'in onlardan okuduğu yerler boyunca.
import com.pantrixui.components.chart.line.PantrixLineChart
- Satırlar ve değerler.
datasatırları,xbir satırın yerini verir. HerChartValuebir seridir: anahtarı, adı ve satırdan değerini okuyan fonksiyonu. - Çizginin gidişi.
curveçizginin bir noktadan ötekine nasıl gittiğini söyler: düz, yumuşak ya da basamaklı. Yumuşak çizgi iki noktanın arasında kalır; değerlerin sahip olmadığı bir tepe ya da çukur göstermez. - Renkten fazlası. Bir serinin
dash'i çizgisini kesik ya da noktalı çizer,marker'ı noktalarına bir şekil koyar. İkisi de lejantta ve tooltip'te serinin örneğinde görünür. - Eksik değerler.
missing, değeri olmayan satırda çizginin ne yapacağını söyler: keser, birleştirir ya da sıfır sayar. - Sayı ekseni. Yerler sayıysa ve
xAxis = ChartAxis(numeric = true)ise noktalar sayıları kadar aralıklı durur ve eksen yuvarlak sayılara işaretlenir; verilmezse sayılar da birer addır, eşit aralıklarla dizilir. - Değer etiketleri ve işaretler.
labelsdeğerleri noktaların üstüne yazar;marksbir hedef çizgisini ya da bir aralığın bandını çizer. - Ne zaman `PantrixChart`. Serileri farklı listelerden gelen, farklı türden olan ya da ikinci bir eksenle okunan bir grafik için: her seri kendi
LineSeries'ini alır. - Otomasyon. Grafik, olduğu
PantrixChartgibi etiketlenir:Chart_<tagKey>.
Örnekler
Aynı satırlardan çizgiler
En yalın hâli: satırlar, satırın yerini veren x ve her seri için bir ChartValue. Seri, anahtarını ve adını alır; sondaki blok satırdan değerini okur.
Üç seri temanın ilk üç grafik rengini alır. Lejanttaki bir ada bas: seri çıkar, kalanlar renklerini korur.
PantrixLineChart(
data = TRAFFIC,
x = { it.day },
values = listOf(
ChartValue("search", "Arama") { it.search },
ChartValue("direct", "Doğrudan") { it.direct },
ChartValue("social", "Sosyal") { it.social }
),
description = "Haftanın günlerine göre ziyaretin üç kaynağı",
tagKey = "plain"
)
private data class Traffic(
val day: String,
val search: Int,
val direct: Int,
val social: Int
)
private val TRAFFIC = listOf(
Traffic("Pzt", search = 420, direct = 240, social = 130),
Traffic("Sal", search = 480, direct = 260, social = 120),
Traffic("Çar", search = 455, direct = 300, social = 165),
Traffic("Per", search = 530, direct = 280, social = 190),
Traffic("Cum", search = 510, direct = 330, social = 240),
Traffic("Cmt", search = 360, direct = 210, social = 310),
Traffic("Paz", search = 330, direct = 180, social = 285)
)
Sayı ekseni
Bir yürüyüş yolunun yüksekliği, yol üzerinde düzensiz aralıklarla ölçülmüş: yerler kilometre olarak birer sayı. xAxis = ChartAxis(numeric = true) ile noktalar sayıları kadar aralıklı durur: 0,8 km ile 1,2 km birbirine yakın, 7,5 km ile 11 km uzak; eksen yuvarlak kilometrelere işaretlenir ve yazımını format verir. Zirvenin çizgisi bir ölçümün yerinde değil, 9,6 km'de duruyor.
Anahtarı kapat: sayılar birer ad olur ve eşit aralıklarla dizilir; yolun dikliği yanlış okunur.
var numeric by remember { mutableStateOf(true) }
val strings = PantrixTheme.strings
PantrixSwitchButton(
checked = numeric,
onCheckedChange = { numeric = it },
label = "Sayı ekseni",
tagKey = "line_numeric"
)
PantrixLineChart(
data = TRAIL,
x = { it.first },
values = listOf(ChartValue("height", "Yükseklik (m)") { it.second }),
curve = ChartCurve.Smooth,
xAxis = ChartAxis(numeric = numeric, format = { "${strings.decimal(it)} km" }),
marks = listOf(ChartReferenceLine(x = 9.6, label = "Zirve")),
description = "Bir yürüyüş yolunun, yol boyunca ölçülen yüksekliği",
tagKey = "numeric"
)
private val TRAIL = listOf(
0.0 to 420,
0.8 to 455,
1.2 to 470,
2.5 to 560,
4.0 to 610,
7.5 to 820,
9.6 to 1_040,
11.0 to 930,
12.4 to 780
)
Çizginin gidişi
curve çizginin bir noktadan ötekine nasıl gittiğini söyler. Linear düz gider. Smooth noktalardan yuvarlak geçer ama onların arasında kalır: bir tepe ya da çukur uydurmaz. Basamaklı olanlar değeri bir noktadan ötekine düz taşır: StepAfter değer değişene kadar yerinde durur, bir stok ya da bir fiyat gibi; StepBefore bir sonraki değere önceden geçer; Step ikisinin ortasında basamak atar.
var curve by remember { mutableStateOf(ChartCurve.Smooth) }
PantrixSegmentButton(
options = CURVES,
selected = curve,
onSelect = { curve = it },
fullWidth = false,
tagKey = "curve"
)
PantrixLineChart(
data = TRAFFIC,
x = { it.day },
values = listOf(ChartValue("search", "Arama", marker = ChartMarker.Circle) { it.search }),
curve = curve,
description = "Haftanın günlerine göre aramadan gelen ziyaret",
tagKey = "curves"
)
private data class Traffic(
val day: String,
val search: Int,
val direct: Int,
val social: Int
)
private val TRAFFIC = listOf(
Traffic("Pzt", search = 420, direct = 240, social = 130),
Traffic("Sal", search = 480, direct = 260, social = 120),
Traffic("Çar", search = 455, direct = 300, social = 165),
Traffic("Per", search = 530, direct = 280, social = 190),
Traffic("Cum", search = 510, direct = 330, social = 240),
Traffic("Cmt", search = 360, direct = 210, social = 310),
Traffic("Paz", search = 330, direct = 180, social = 285)
)
private val CURVES = listOf(
SegmentOption(value = ChartCurve.Linear, label = "Düz", tagKey = "linear"),
SegmentOption(value = ChartCurve.Smooth, label = "Yumuşak", tagKey = "smooth"),
SegmentOption(value = ChartCurve.Step, label = "Basamak", tagKey = "step"),
SegmentOption(value = ChartCurve.StepBefore, label = "Önce", tagKey = "before"),
SegmentOption(value = ChartCurve.StepAfter, label = "Sonra", tagKey = "after")
)
Renkten fazlasıyla ayrılan seriler
Renk tek başına her okuyucuya yetmez: kırmızıyla yeşili ayırmayan bir göze, siyah beyaz bir çıktıya, çok serili bir grafiğe. Burada her seri renginden fazlasıyla da ayrılıyor: biri düz çizgi ve daire, biri kesik çizgi ve kare, biri noktalı çizgi ve üçgen.
Aynı örnek lejantta ve tooltip'te de durur: seri orada da çizgisiyle ve şekliyle tanınır.
PantrixLineChart(
data = TRAFFIC,
x = { it.day },
values = listOf(
ChartValue("search", "Arama", marker = ChartMarker.Circle) { it.search },
ChartValue("direct", "Doğrudan", dash = ChartDash.Dashed, marker = ChartMarker.Square) { it.direct },
ChartValue("social", "Sosyal", dash = ChartDash.Dotted, marker = ChartMarker.Triangle) { it.social }
),
description = "Haftanın günlerine göre ziyaretin üç kaynağı",
tagKey = "told_apart"
)
private data class Traffic(
val day: String,
val search: Int,
val direct: Int,
val social: Int
)
private val TRAFFIC = listOf(
Traffic("Pzt", search = 420, direct = 240, social = 130),
Traffic("Sal", search = 480, direct = 260, social = 120),
Traffic("Çar", search = 455, direct = 300, social = 165),
Traffic("Per", search = 530, direct = 280, social = 190),
Traffic("Cum", search = 510, direct = 330, social = 240),
Traffic("Cmt", search = 360, direct = 210, social = 310),
Traffic("Paz", search = 330, direct = 180, social = 285)
)
Eksensiz, küçük bir çizgi
Bir kartın köşesindeki küçük bir çizgi: eksenleri ve lejantı yok (null), yüksekliği altmış dp. Değerleri yine yerinde durur: imleçle ya da parmakla gösterilen günün değeri tooltip'te okunur, ekran okuyucu günleri tek tek söyler.
Ekseni olmayan grafik, değerlerinin nasıl yazılacağını tooltip'ine söyler (ChartTooltip.format): burada sayının ardına neyin sayısı olduğu ekleniyor.
val strings = PantrixTheme.strings
PantrixLineChart(
data = TRAFFIC,
x = { it.day },
values = listOf(ChartValue("search", "Arama") { it.search }),
modifier = Modifier.height(60.dp),
curve = ChartCurve.Smooth,
xAxis = null,
yAxis = null,
tooltip = ChartTooltip(format = { "${strings.decimal(it)} ziyaret" }),
description = "Haftanın günlerine göre aramadan gelen ziyaret",
tagKey = "bare"
)
private data class Traffic(
val day: String,
val search: Int,
val direct: Int,
val social: Int
)
private val TRAFFIC = listOf(
Traffic("Pzt", search = 420, direct = 240, social = 130),
Traffic("Sal", search = 480, direct = 260, social = 120),
Traffic("Çar", search = 455, direct = 300, social = 165),
Traffic("Per", search = 530, direct = 280, social = 190),
Traffic("Cum", search = 510, direct = 330, social = 240),
Traffic("Cmt", search = 360, direct = 210, social = 310),
Traffic("Paz", search = 330, direct = 180, social = 285)
)
API
data
Bir kez verilen satırlardan bir çizgi grafiği: onlardan okunan values'ın her biri için bir çizgi, x'in onlardan okuduğu yerler boyunca.
| 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. |
missing | ChartMissing | ChartMissing.Gap | değeri olmayan bir satırda bir çizginin ne yaptığı. |
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'ı. |