Treemap
Bir ağaç haritası: karolara bölünmüş bir kutu, her karo değerinin bütüne oranı kadar büyük. Çok parçalı bir bütüne yakışır; bir pastanın okunamayacak kadar çok dilimi olacağı yerde: bir diskin klasörleri, kalemleriyle bir bütçe, şirketleriyle bir pazar. Büyük olan hemen görülür, küçük parçaların da yeri vardır.
import com.pantrixui.components.chart.treemap.PantrixTreemap
- Gruplar.
childrenveren öğe gruptur: değeri karolarının toplamıdır, kendisine verilen değer okunmaz. - Renk. Verilen her öğe temanın grafik renklerinden sırasına düşeni alır; bir grubun karoları grubun rengindedir.
colorile bir öğeye ya da bir karoya kendi rengi verilir. - Değere göre ton.
scaleverilirse her karo, heatmap'in hücreleri gibi değerinin ölçekteki tonunda çizilir (HeatmapScale): büyük karo ölçeğin ucuna daha yakındır. Öğenin ve grubun rengi o zaman okunmaz; bloklar ve grupların adları kalır. Ölçek çubuğulegend'ın söylediği yerde durur. - Gösterilen karo. İmlecin altındaki ya da dokunulan karo çerçevelenir ve tooltip grubunu, adını, değerini ve bütündeki payını yazar.
- Durum ve basmak. Gösterilen karo
ChartState'te,x'i öğenin anahtarı olan bir seçim olarak durur.onSelectbasılan karoyu verir. - Yön. Sağdan sola okunan dilde en büyük karo sağda durur.
- Dışa aktarma.
exportgrafiğin üstüne bir düğme koyar: grafik ekrandaki hâliyle, gösterilen yer ve tooltip olmadan, PNG, SVG ya da PDF dosyası olarak üretilir ve uygulamaya verilir. - Otomasyon.
Treemap_<tagKey>; karolar.Plot, bir karo.Tile_<sıra>, ölçek.Legend, tooltip.Tooltip.
Örnekler
Diski dolduranlar
Bir diski dolduranlar, gigabayt olarak. Her klasör bir karo: en büyüğü en başta.
İmleci bir karonun üstüne getir ya da dokun: tooltip klasörün boyutunu ve diskteki payını yazar.
PantrixTreemap(
items = diskFolders(),
description = "Diski dolduran klasörler",
tagKey = "plain"
)
internal fun diskFolders(): List<TreemapItem> = listOf(
TreemapItem("photos", "Fotoğraflar", 148),
TreemapItem("video", "Videolar", 96),
TreemapItem("apps", "Uygulamalar", 64),
TreemapItem("music", "Müzik", 41),
TreemapItem("docs", "Belgeler", 27),
TreemapItem("mail", "Posta", 14),
TreemapItem("other", "Öteki", 9)
)
Gruplar
Bir bütçe, bölümlere ve bölümlerin kalemlerine göre. Her bölüm bir grup: kalemleri bir blokta, bölümün renginde ve bölümün adı üstlerinde durur.
PantrixTreemap(
items = budgetByDepartment(),
description = "Bölümlere göre bütçe",
tagKey = "grouped"
)
internal fun budgetByDepartment(): List<TreemapItem> = listOf(
TreemapItem(
key = "product",
name = "Ürün",
children = listOf(
TreemapItem("engineering", "Mühendislik", 420),
TreemapItem("design", "Tasarım", 160),
TreemapItem("research", "Araştırma", 90)
)
),
TreemapItem(
key = "growth",
name = "Büyüme",
children = listOf(
TreemapItem("ads", "Reklam", 240),
TreemapItem("events", "Etkinlik", 110),
TreemapItem("content", "İçerik", 70)
)
),
TreemapItem(
key = "operations",
name = "İşletme",
children = listOf(
TreemapItem("support", "Destek", 130),
TreemapItem("office", "Ofis", 80),
TreemapItem("legal", "Hukuk", 45)
)
)
)
Değere göre ton
Aynı bütçe, karoları değerlerine göre tonlanmış (scale): ölçek temanın birincil renginin kabından birincil rengine gider, büyük kalem daha koyu. Ölçek çubuğu grafiğin altında; grupların rengi bu durumda okunmaz.
val colors = PantrixTheme.colors
PantrixTreemap(
items = budgetByDepartment(),
scale = HeatmapScale(low = colors.primary.container, color = colors.primary.color),
description = "Bölümlere göre bütçe",
tagKey = "shaded"
)
internal fun budgetByDepartment(): List<TreemapItem> = listOf(
TreemapItem(
key = "product",
name = "Ürün",
children = listOf(
TreemapItem("engineering", "Mühendislik", 420),
TreemapItem("design", "Tasarım", 160),
TreemapItem("research", "Araştırma", 90)
)
),
TreemapItem(
key = "growth",
name = "Büyüme",
children = listOf(
TreemapItem("ads", "Reklam", 240),
TreemapItem("events", "Etkinlik", 110),
TreemapItem("content", "İçerik", 70)
)
),
TreemapItem(
key = "operations",
name = "İşletme",
children = listOf(
TreemapItem("support", "Destek", 130),
TreemapItem("office", "Ofis", 80),
TreemapItem("legal", "Hukuk", 45)
)
)
)
Bir karoya basmak
onSelect, basılan karoyu verir: bir karoya bas ya da klavyeyle bir karoya gidip Enter'a bas, kartın altındaki satır basılanı yazar. Değerler kendi biçimiyle yazılıyor: karolarda ChartDataLabels(format), tooltip'te ChartTooltip(format).
val report = LocalExampleEvents.current
PantrixTreemap(
items = diskFolders(),
labels = ChartDataLabels(format = { "${it.toInt()} GB" }),
tooltip = ChartTooltip(format = { "${it.toInt()} GB" }),
onSelect = { tile -> report("${tile.name}: ${tile.text}") },
description = "Diski dolduran klasörler",
tagKey = "pressed"
)
internal fun diskFolders(): List<TreemapItem> = listOf(
TreemapItem("photos", "Fotoğraflar", 148),
TreemapItem("video", "Videolar", 96),
TreemapItem("apps", "Uygulamalar", 64),
TreemapItem("music", "Müzik", 41),
TreemapItem("docs", "Belgeler", 27),
TreemapItem("mail", "Posta", 14),
TreemapItem("other", "Öteki", 9)
)
Dışa aktarma
export = ChartExport(...) grafiğin üstüne bir dışa aktarma düğmesi koyar: bas ve türü seç (PNG, SVG ya da PDF). Grafik dosyayı üretir ve onExport'a verir; altta adı ve boyu, PNG ise resmi görünür, "Dosyayı kaydet" onu platformun yoluyla verir.
Dosyada karolar ve adları durur; gösterilen karonun tooltip'i dosyada yoktur.
var file by remember { mutableStateOf<ChartExportFile?>(null) }
PantrixTreemap(
items = diskFolders(),
description = "Diski dolduran klasörler",
tagKey = "exported",
export = ChartExport(fileName = "disk") { file = it }
)
ExportedFile(file, tagKey = "exported")
internal fun diskFolders(): List<TreemapItem> = listOf(
TreemapItem("photos", "Fotoğraflar", 148),
TreemapItem("video", "Videolar", 96),
TreemapItem("apps", "Uygulamalar", 64),
TreemapItem("music", "Müzik", 41),
TreemapItem("docs", "Belgeler", 27),
TreemapItem("mail", "Posta", 14),
TreemapItem("other", "Öteki", 9)
)
API
items
Bir ağaç haritası: karolara bölünmüş bir kutu, her karo değerinin bütüne oranı kadar büyük. Çok parçalı bir bütüne yakışır; bir pastanın okunamayacak kadar çok dilimi olacağı yerde: bir diskin klasörleri, kalemleriyle bir bütçe, şirketleriyle bir pazar. Büyük olan hemen görülür, küçük parçaların da yeri vardır.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
items | List<TreemapItem> | karolar ve karo grupları. Anahtarları karoları birbirinden ayırır; aynı anahtarlı iki karo reddedilir. | |
modifier | Modifier | Modifier | grafiğin modifier'ı. Buradaki bir yükseklik grafiğindir. |
labels | ChartDataLabels? | ChartDataLabels() | karolara yazılan: her karonun adı ve altında, format'ın söylediği gibi ya da bir şey söylemiyorsa kısa yazılan değeri. null karolara hiçbir şey yazmaz. |
tooltip | ChartTooltip? | ChartTooltip() | gösterilen karo için gösterilen: bir grupta duruyorsa başlık olarak grubu, altında da adı ve bütündeki payıyla değeri. Bir karonun paylaşacağı bir yeri ve içinden geçen bir çizgisi yoktur: shared ve crosshair okunmaz. null hiç göstermez. |
empty | (@Composable () -> Unit)? | null | grafiğin çizecek değeri yokken 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. |
state | ChartState | rememberChartState() | okuyucunun 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: grafik hakkında söylediği ilk şey. Verilmezse grafik kendisine verilen öğelerin adlarıyla duyurulur. |
onSelect | ((ChartPoint) -> Unit)? | null | basılan karoyla çağrılır: anahtarı series'i ve x'idir, adı name'i ve label'ı, text'i de ardında bütündeki payıyla değeridir. |
style | ChartStyle? | null | bu grafiğin kendi geometrisi: burada verilen alanlar, gerisi için temanınkiler. İki karonun arası sliceGap kadardır, köşeleri de barRadius'un söylediği kadar yuvarlaktır. |
colors | ChartColors? | null | bu grafiğin kendi renkleri, temanınkiler olmadıkları yerde. |
tagKey | String? | null | grafiğin otomasyon anahtarı: grafik Treemap_<tagKey>, karolarının tamamı Treemap_<tagKey>.Plot, bir karo, karoların dizildiği sırayla birden sayılarak, Treemap_<tagKey>.Tile_<number>, ölçek Treemap_<tagKey>.Legend ve tooltip Treemap_<tagKey>.Tooltip olur. Bir karoya basış, öğenin anahtarıyla bir Treemap select olayı olarak bildirilir. Değerlerden hiçbir şey bildirilmez. |
scale | HeatmapScale? | null | karoları değerlerine göre tonlayan şey, heatmap'in ölçeğinin hücrelerini tonladığı gibi: uç vermezse uçları karoların değerlerinin en küçüğü ve en büyüğüdür. null ise her karo kendi rengindedir ya da grubunun. |
legend | ChartLegend? | ChartLegend() | ton ölçeğinin durduğu yer, treemap'in bir scale'i olduğunda: olmadan gösterecek bir şey yoktur. null hiç göstermez. |
export | ChartExport? | null | grafiği uygulamanın dışına PNG, SVG ya da PDF olarak çıkarmayı sağlayan şey: grafiğin üstündeki bir düğme onun o anki hâlinin dosyasını üretip verir (bkz. ChartExport). null, grafikte böyle bir düğme yoktur. Renklerin ölçeği dosyada karoların altında durur. |
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'ı. |
Erişilebilirlik
- Karodaki yazı.
labelsile her karoya adı ve altına değeri yazılır, renginin üstünde daha iyi okunan siyah ya da beyazla. Adına yer olmayan karoya ikisi de yazılmaz; tooltip ve ekran okuyucu ikisini de söyler. - Klavye. Grafik, Tab için tek duraktır: bir ok, gösterdiği yöndeki en yakın karoya gider; Home ve End en büyük ve son karoya gider, Escape bırakır, Enter ve boşluk gösterilen karoya basar.
- Ekran okuyucu. Grafik
description'ını, ardından en büyük bloktan başlayarak her karoyu grubu, adı, değeri ve payıyla söyler. İki yüzden çok karosu olan grafik yalnızca açıklamasıyla anlatılır.