Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
Bu özellik Genel Önizleme aşamasındadır.
Özel görselleştirmeler, yapay zeka/BI panolarındaki grafikleri yerleşik görselleştirme türlerinin ötesinde özelleştirmenize olanak tanır. Özel görselleştirmeler, JSON belirtiminden grafikleri işlemek için Vega-Lite kitaplığını kullanır.
Özel görselleştirmeler, yerleşik seçeneklerin ötesine geçen özel grafik türlerini oluşturabilir. Aşağıdaki filogenetik ağaç, paylaşılan grup ve aile merkezleri etrafında ilgili kayıtları gruplamak için kuvvet yönlendirilmiş bir düzen kullanır:
Adım adım bir grafik oluşturmak için Örnek görselleştirmeler bölümüne bakınız. Diğer harita türleri için spesifikasyonlara referans vermek için bkz. Daha fazla harita spesifikasyonu.
Özel görselleştirme oluşturma
Özel görselleştirme oluşturmak için:
- Bir veri kümesi seçin.
- Görselleştirme yapılandırması bölmesinde Gelişmiş görselleştirme bölümünün altında Özel Viz'i seçin.
- Alanlar bölümünde, kullanmak istediğiniz alanları ekleyin. Her alanın benzersiz bir Adı vardır. Vega-Lite spesifikasyonunuzda alanlara bu adları kullanarak başvurun.
- Vega-Lite JSON belirtiminizi Vega-Lite belirtim düzenleyicisine girin.
Başvuru veri kümesi sütunları
Bir Vega-Lite spesifikasyonunda referans sütunları aşağıdaki şekillerden biriyle kullanır:
"field": "{columnName}"adresini kullanın. Aşağıdaki örnek,xFieldsütununu x eksenine atar:"encoding": { "x": { "field": "xField", "type": "quantitative" } }İfadelerde
datum["{columnName}"]veyadatum.{columnName}kullanın. Aşağıdaki örnek,xversütunlarından yeni biranglesütunu oluşturur:{ "calculate": "datum.r * cos(datum.angle)", "as": "x" }
Daha fazla bilgi için Vega ifadeleri belgelerine bakın datum .
Pano temasını devral
Özel görselleştirmeler, açık ve koyu mod da dahil olmak üzere panonun temasına otomatik olarak uyarlanabilir. Aşağıdaki grafik öğeleri, belirtiminizde herhangi bir değişiklik yapmadan tema değerlerini devralır:
- Eksen, gösterge, başlık ve üst bilgi yazı tipleri panonun yapılandırılan yazı tipleriyle eşleşmektedir.
- Eksen ızgara çizgileri, aktif mod için gösterge panelinin ızgara rengiyle eşleşir.
- Grafiğin arka planı, pencere öğesinin temalı arka planı üzerinde şeffaftır.
Belirtiminizin config bloğunda tanımladığınız ayarlar devralınan varsayılanlardan önceliklidir.
İfadelerde tema değerlerine başvurun
İşaretleri tema uyumlu değerlerle biçimlendirmek için, bir Vega-Lite ifadesi ({ "expr": "..." }) içinde aşağıdaki sinyallere başvurun:
| Sinyal | Description |
|---|---|
colors |
Etkin mod için önceden çözümlenmiş renk belirteçleri. Bunları , colors.textPrimary.defaultve colors.gridColorgibi colors.markHighlightColoryaygın değerler için kullanın. Bunları [mode] ile dizine ekleme; bunlar zaten çözülmüş. |
mode |
Etkin renk modu; 'light' veya 'dark'. Mod başına varyantlar sağlayan dashboardTheme alanları dizinlemek için bunu kullanın. |
dashboardTheme |
Gösterge paneli sahibi tarafından yapılandırılan temanın tamamı; buna yazı tipleri (resolvedFontSettings), kategorik palet (visualizationColors) ve her mod için renkler (gridLineColor) dahildir. Moda özgü varyantlar içeren alanlar için [mode] dizini gerekir. |
colors ve dashboardTheme sinyalleri bağımsızdır. Sinyal, colors aktif mod için çözümlenmiş pratik tokenlar sağlarken, dashboardTheme tüm sahibi tarafından yapılandırılmış temayı ortaya çıkarır. Önce colors kullanın; yazı tipleri, tam palet veya dashboardTheme'nin sağlamadığı herhangi bir değer için colors kullanın.
Aşağıdaki örnekler, tema değerlerine nasıl referans verileceğini gösterir:
Metin işareti için panonun gövde yazı tipini kullanın:
{ "expr": "dashboardTheme.resolvedFontSettings.fieldValue.fontFamily" }Etkin mod için panonun başlık rengini kullanın:
{ "expr": "dashboardTheme.resolvedFontSettings.fieldTitle.fontColor[mode]" }Panonun kategorik paletinden bir renk kullanın:
{ "expr": "dashboardTheme.visualizationColors[0]" }
Note
Jetonlar colors aktif mod için zaten çözülmüştür. İndeks atlayın [mode] ve , değil colors.markHighlightColor.colors.markHighlightColor[mode] Altındaki dashboardTheme alanlar, örneğin mod başına varyantları dashboardTheme.gridLineColor[mode]olan alanlar, [mode] örneğin , indeks gerektirir.
Seçimdeki diğer pencere öğelerini filtreleme
Özel görselleştirme çapraz filtre kaynağı işlevi görebilir: Kullanıcı bir işarete tıkladığında, seçim panodaki diğer pencere öğelerini filtreler. Bunu etkinleştirmek için, databricks_mark_selection ayrılmış adına sahip bir nokta seçimi parametresi ekleyin. oluşturucu bu adı algılar ve seçimi panonun çapraz filtre durumuna bağlar.
"params": [
{
"name": "databricks_mark_selection",
"select": { "type": "point", "fields": ["categoryName"] }
}
]
Aşağıdaki gereksinimler geçerlidir:
- parametresi
nametam olarakdatabricks_mark_selectionolmalıdır. Diğer adlar normal parametre olarak değerlendirilir ve çapraz filtrelemeye neden olmaz. -
select.typeolmalıdırpoint. Aralık (fırça) seçimleri, çapraz filtreleme kaynağı olarak desteklenmez. -
select.fields, ham sütun adlarını değil pencere öğesi yapılandırmasının Alanlar bölümünde tanımlanan alan adlarını listelemelidir. -
select.fieldsiçindeki yalnızca boyut (gruplandırma) alanlarını listeleyin.SUM(...)veyaAVG(...)gibi toplanmış ölçüler, çapraz filtrelemeyi yönlendiremez. - Birden çok alanı seçmek için bunları birlikte listeleyin:
"fields": ["categoryName", "regionName"].
Seçili işaretleri vurgula
Seçili işaretleri vurgulamak için, dolgu tabanlı bir işarette (örneğin stroke, strokeWidth veya bar) arc ve rect koşullarını kullanın ve color kodlamasını alanınıza bağlı tutun. Vurgunun hem açık hem de koyu modlarda okunaklı kalması için konturda { "expr": "colors.markHighlightColor" } kullanın.
Aşağıdaki örnek, bir çubuğa tıklandığında gösterge panelinin geri kalanını categoryName ile filtreler. Seçili çubuklar temaya uygun bir kenarlık alır, seçili olmayan çubuklar ise renk kodlamasını koruyarak soluklaştırılır.
JSON belirtimi
{
"$schema": "https://vega.github.io/schema/vega-lite/v6.json",
"data": { "name": "databricks_query" },
"width": "container",
"height": "container",
"config": { "autosize": { "type": "fit", "contains": "padding" } },
"params": [
{
"name": "databricks_mark_selection",
"select": { "type": "point", "fields": ["categoryName"] }
}
],
"mark": { "type": "bar", "stroke": null },
"encoding": {
"x": { "field": "categoryName", "type": "nominal" },
"y": { "field": "salesValue", "type": "quantitative" },
"color": { "field": "categoryName", "type": "nominal" },
"fillOpacity": {
"condition": { "param": "databricks_mark_selection", "value": 1 },
"value": 0.3
}
"stroke": {
"condition": {
"param": "databricks_mark_selection",
"empty": false,
"value": { "expr": "colors.markHighlightColor" }
},
"value": null
},
"strokeWidth": {
"condition": { "param": "databricks_mark_selection", "empty": false, "value": 2 },
"value": 0
}
}
}
Bir grafiki otomatik olarak boyutlandır
Grafiği kapsayıcısına sığacak şekilde yeniden boyutlandırmak için belirtiminizin en üst düzeyine aşağıdaki ayarları ekleyin:
"width": "container",
"height": "container",
"config": {
"autosize": {
"type": "fit",
"contains": "padding"
}
}
Örnek görselleştirmeler
Aşağıdaki örnekler, basit katmanlı bir grafikten daha gelişmiş bir filogenetik ağaca kadar özel bir görselleştirme oluşturmayı adım adım ilerliyor.
Yuvarlanan ortalamalı katmanlı grafik
Bu örnek, Databricks örnek veri kümelerindeki hava durumu verilerini kullanarak sıralı ortalama çizgi katmanıyla ham sıcaklık veri noktalarını çizen katmanlı bir grafik oluşturur.
Aşağıdaki sorguyla bir veri kümesi oluşturun:
SELECT date, temperature AS temp_max FROM samples.accuweather.historical_hourly_imperial WHERE city_name = 'singapore' ORDER BY date;Görselleştirme yapılandırması bölmesindeki Gelişmiş'in altında Özel Viz'i seçin.
Önceki adımda oluşturduğunuz veri kümesini seçin.
Alanlar bölümünde, tarih sütunu için bir alan ekleyin ve Adını olarak
dateayarlayın.Sıcaklık sütunu için bir alan ekleyin ve Adını olarak
temp_maxayarlayın.Aşağıdaki belirtimi Vega-Lite belirtim düzenleyicisine kopyalayın. Eğer x ekseni kırpılmışsa, bkz. Bir grafik otomatik olarak yeniden boyutlandırılır.
JSON belirtimi
{ "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "width": "container", "height": "container", "config": { "autosize": { "type": "fit", "contains": "padding" } }, "data": { "name": "databricks_query" }, "transform": [ { "window": [{ "field": "temp_max", "op": "mean", "as": "rolling_mean" }], "frame": [-15, 15] } ], "encoding": { "x": { "field": "date", "type": "temporal", "title": "Date" }, "y": { "type": "quantitative", "scale": { "zero": false }, "axis": { "title": "Max temperature and rolling mean" } } }, "layer": [ { "mark": { "type": "point", "opacity": 0.3 }, "encoding": { "y": { "field": "temp_max", "title": "Max temperature" } } }, { "mark": { "type": "line", "color": "red", "size": 3 }, "encoding": { "y": { "field": "rolling_mean", "title": "Rolling mean of max temperature" } } } ] }
Filogenetik ağac
Bu örnek, sayfanın üstünde gösterilen filogenetik ağacı oluşturmak için küçük bir örnek veri seti kullanmaktadır. Vega-Lite, verdiğiniz koordinatlarda noktaları çizer, ancak bir ağ diyagramı için düğüm konumlarını hesaplamaz. Bu hesaplama, veri grafike ulaşmadan önce sorguda gerçekleşir; burada sorgu her noktanın x ve y koordinatlarını önceden hesaplar. Sorgu, spesifikasyonun ayrı katmanlar olarak render ettiği üç kayıt türü yayımlar: path sıralar eğri dalları çizer, node satırlar yaprak dairelerini çizer ve label satırlar grup etiketlerini konumlandırır.
Örnek verileri indirin. Her satır, bir fosil bulgusunu temsil eder ve
dig_longitudedig_latitudekazı alanının koordinatlarını verir.Kenar çubuğunda Panolar'a tıklayın
.Pano oluştur'a tıklayın.
Veri sekmesine tıklayın.
Veri ekle, ardından Veri Yükle'ye tıklayın.
İndirilmiş dosyayı dosya yükleme panelinden Oluştur veya değiştir tablosuna bırakın.
Tabloyu kaydetmek istediğiniz Katalog ve Şemayı seçin, ardından bir tablo adı girin.
Tablo oluştur'a tıklayın. Tam tablo otomatik olarak veri seti olarak eklenir.
Add SQL veri seti tuşuna tıklayın ve sorguyu yapıştırın. Sorgu
FROMmaddesinde, katalog, şema ve tablo isimlerini, tabloyu oluştururken kullandığınız isimlerle değiştirin.Özel görselleştirmeyi oluştur, Özel görselleştirme yarat bölümündeki adımları takip ederek. Alanlar bölümünde, her alan adını kendi adı olarak kullanarak aşağıdaki alanları ekleyin:
record_type,x, ,y,fossil_tag,point_order,suborderroar_scoreclade_labelgenus_symbolfamily_taxonve .label_textSpesifikasyonu JSON Vega-Lite olarak kullanın.
SQL sorgusu
WITH base AS (
SELECT
fossil_tag,
genus_symbol,
clade_label,
suborder,
family_taxon,
dig_longitude,
dig_latitude,
roar_score
FROM
`my_catalog`.`default`.`dino_table`
),
root_pt AS (
SELECT
AVG(dig_longitude) AS rx,
AVG(dig_latitude) AS ry
FROM
base
),
group_pts AS (
SELECT
suborder,
AVG(dig_longitude) AS gx,
AVG(dig_latitude) AS gy
FROM
base
GROUP BY
suborder
),
family_pts AS (
SELECT
suborder,
family_taxon,
AVG(dig_longitude) AS fx,
AVG(dig_latitude) AS fy
FROM
base
GROUP BY
suborder,
family_taxon
),
ctx AS (
SELECT
b.fossil_tag,
b.suborder,
b.family_taxon,
b.clade_label,
b.genus_symbol,
b.dig_longitude,
b.dig_latitude,
b.roar_score,
r.rx,
r.ry,
g.gx,
g.gy,
f.fx,
f.fy
FROM
base b
CROSS JOIN root_pt r
JOIN group_pts g
ON b.suborder = g.suborder
JOIN family_pts f
ON b.suborder = f.suborder
AND b.family_taxon = f.family_taxon
),
waypoints AS (
SELECT
fossil_tag,
suborder,
family_taxon,
clade_label,
genus_symbol,
roar_score,
0 AS point_order,
rx AS x,
ry AS y
FROM
ctx
UNION ALL
SELECT
fossil_tag,
suborder,
family_taxon,
clade_label,
genus_symbol,
roar_score,
1,
rx + 0.30 * (gx - rx),
ry + 0.30 * (gy - ry)
FROM
ctx
UNION ALL
SELECT
fossil_tag,
suborder,
family_taxon,
clade_label,
genus_symbol,
roar_score,
2,
gx + 0.15 * (fx - gx),
gy + 0.15 * (fy - gy)
FROM
ctx
UNION ALL
SELECT
fossil_tag,
suborder,
family_taxon,
clade_label,
genus_symbol,
roar_score,
3,
gx + 0.50 * (fx - gx) + 0.03 * (dig_longitude - fx),
gy + 0.50 * (fy - gy) + 0.03 * (dig_latitude - fy)
FROM
ctx
UNION ALL
SELECT
fossil_tag,
suborder,
family_taxon,
clade_label,
genus_symbol,
roar_score,
4,
fx + 0.15 * (dig_longitude - fx),
fy + 0.15 * (dig_latitude - fy)
FROM
ctx
UNION ALL
SELECT
fossil_tag,
suborder,
family_taxon,
clade_label,
genus_symbol,
roar_score,
5,
fx + 0.65 * (dig_longitude - fx),
fy + 0.65 * (dig_latitude - fy)
FROM
ctx
UNION ALL
SELECT
fossil_tag,
suborder,
family_taxon,
clade_label,
genus_symbol,
roar_score,
6,
dig_longitude,
dig_latitude
FROM
ctx
)
SELECT
fossil_tag,
suborder,
point_order,
x,
y,
family_taxon,
clade_label,
genus_symbol,
roar_score,
'path' AS record_type,
CAST(NULL AS STRING) AS label_text
FROM
waypoints
UNION ALL
SELECT
fossil_tag,
suborder,
99 AS point_order,
dig_longitude AS x,
dig_latitude AS y,
family_taxon,
clade_label,
genus_symbol,
roar_score,
'node' AS record_type,
CAST(NULL AS STRING) AS label_text
FROM
base
UNION ALL
SELECT
g.suborder AS fossil_tag,
g.suborder AS suborder,
100 AS point_order,
g.gx
+ (g.gx - r.rx)
* CASE LOWER(g.suborder)
WHEN 'titanosauria' THEN 0.10
WHEN 'hadrosauria' THEN 0.25
WHEN 'ornithopoda' THEN 1.30
WHEN 'stegosauria' THEN 0.73
ELSE 0.55
END AS x,
g.gy
+ (g.gy - r.ry)
* CASE LOWER(g.suborder)
WHEN 'titanosauria' THEN 0.10
WHEN 'hadrosauria' THEN 0.25
WHEN 'ornithopoda' THEN 1.30
WHEN 'stegosauria' THEN 0.73
ELSE 0.55
END AS y,
CAST(NULL AS STRING) AS family_taxon,
CAST(NULL AS STRING) AS clade_label,
CAST(NULL AS STRING) AS genus_symbol,
CAST(NULL AS DOUBLE) AS roar_score,
'label' AS record_type,
g.suborder AS label_text
FROM
group_pts g CROSS JOIN root_pt r
JSON belirtimi
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": { "name": "databricks_query" },
"width": "container",
"height": "container",
"background": "white",
"config": {
"autosize": { "type": "fit", "contains": "padding" },
"view": { "stroke": null }
},
"layer": [
{
"transform": [{ "filter": "datum.record_type === 'path'" }],
"mark": {
"type": "line",
"interpolate": "basis",
"strokeCap": "round",
"strokeJoin": "round"
},
"encoding": {
"x": {
"field": "x",
"type": "quantitative",
"axis": null,
"scale": { "zero": false, "nice": false }
},
"y": {
"field": "y",
"type": "quantitative",
"axis": null,
"scale": { "zero": false, "nice": false }
},
"detail": { "field": "fossil_tag", "type": "nominal" },
"order": { "field": "point_order", "type": "quantitative" },
"color": {
"field": "suborder",
"type": "nominal",
"scale": { "scheme": "tableau10" },
"legend": null
},
"opacity": { "value": 0.3 },
"strokeWidth": { "value": 0.8 }
}
},
{
"transform": [{ "filter": "datum.record_type === 'node'" }],
"mark": {
"type": "circle",
"opacity": 0.9,
"stroke": "white",
"strokeWidth": 0.3
},
"encoding": {
"x": {
"field": "x",
"type": "quantitative",
"axis": null,
"scale": { "zero": false, "nice": false }
},
"y": {
"field": "y",
"type": "quantitative",
"axis": null,
"scale": { "zero": false, "nice": false }
},
"color": {
"field": "suborder",
"type": "nominal",
"scale": { "scheme": "tableau10" },
"legend": { "title": "Suborder", "orient": "right" }
},
"size": {
"field": "roar_score",
"type": "quantitative",
"scale": { "domain": [0, 100], "range": [4, 150] },
"legend": null
},
"tooltip": [
{ "field": "clade_label", "title": "Clade" },
{ "field": "genus_symbol", "title": "Symbol" },
{ "field": "suborder", "title": "Suborder" },
{ "field": "family_taxon", "title": "Family" },
{ "field": "roar_score", "title": "Roar Score", "format": ".1f" }
]
}
},
{
"transform": [{ "filter": "datum.record_type === 'label'" }],
"mark": {
"type": "text",
"fontSize": 12,
"fontWeight": "bold",
"opacity": 0.85
},
"encoding": {
"x": {
"field": "x",
"type": "quantitative",
"axis": null,
"scale": { "zero": false, "nice": false }
},
"y": {
"field": "y",
"type": "quantitative",
"axis": null,
"scale": { "zero": false, "nice": false }
},
"text": { "field": "label_text", "type": "nominal" },
"color": {
"field": "suborder",
"type": "nominal",
"scale": { "scheme": "tableau10" },
"legend": null
}
}
}
]
}
Daha fazla harita spekülasyonu
Aşağıdaki özellikler, yerleşik görselleştirme türleri arasında bulunmayan grafikleri gösterir. Daha fazla örnek için bkz.Vega-Lite örnek galeriler.
Mermi grafik
categoryField bölümünde , currentField, paceFieldve targetField tanımlayın.
JSON belirtimi
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"width": "container",
"height": "container",
"data": { "name": "databricks_query" },
"config": {
"autosize": { "type": "fit", "contains": "padding" }
},
"transform": [
{
"fold": ["targetField", "paceField", "currentField"],
"as": ["measure_name", "measure_value"]
},
{
"calculate": "toNumber(datum.measure_value)",
"as": "measure_value"
},
{
"calculate": "{ \"targetField\": \"Target\", \"paceField\": \"Pace\", \"currentField\": \"Current\" }[datum.measure_name]",
"as": "measure_label"
},
{
"calculate": "indexof([\"Target\", \"Pace\", \"Current\"], datum.measure_label)",
"as": "measure_order"
}
],
"layer": [
{
"mark": "bar",
"params": [
{
"name": "legend_click",
"select": { "type": "point", "fields": ["measure_label"] },
"bind": "legend"
}
],
"encoding": {
"color": { "field": "measure_label" },
"opacity": { "value": 0 }
}
},
{
"transform": [{ "filter": { "param": "legend_click" } }],
"layer": [
{
"layer": [
{
"mark": { "type": "bar", "tooltip": true },
"encoding": { "color": { "field": "measure_label", "legend": null } },
"transform": [{ "filter": { "field": "measure_label", "oneOf": ["Pace"] } }]
},
{
"mark": { "type": "bar", "height": 7, "tooltip": true },
"encoding": { "color": { "field": "measure_label", "legend": null } },
"transform": [{ "filter": { "field": "measure_label", "oneOf": ["Current"] } }]
},
{
"mark": { "type": "tick", "tooltip": true, "thickness": 3 },
"encoding": { "color": { "field": "measure_label", "legend": null } },
"transform": [{ "filter": { "field": "measure_label", "oneOf": ["Target"] } }]
}
],
"encoding": {
"x": {
"field": "measure_value",
"type": "quantitative",
"stack": null,
"title": "Value",
"axis": { "orient": "bottom" }
},
"color": {
"scale": {
"domain": ["Target", "Pace", "Current"],
"range": ["#000000", "#bcbcbc", "#A66BBF"]
}
},
"order": {
"field": "measure_order",
"type": "quantitative",
"sort": "descending"
}
}
}
],
"encoding": {
"y": {
"field": "categoryField",
"type": "ordinal",
"title": "Category",
"axis": { "labelOverlap": true }
},
"tooltip": [
{ "field": "categoryField", "type": "nominal", "title": "Category" },
{ "field": "currentField", "type": "quantitative", "title": "Current" },
{ "field": "paceField", "type": "quantitative", "title": "Pace" },
{ "field": "targetField", "type": "quantitative", "title": "Target" }
]
}
}
]
}
Ölçer
$valueField ve $totalField öğelerini Alanlar bölümünde tanımlayın.
JSON belirtimi
{
"$schema": "https://vega.github.io/schema/vega-lite/v6.json",
"width": "container",
"height": "container",
"data": { "name": "databricks_query" },
"config": {
"concat": { "spacing": 0 },
"autosize": { "type": "fit", "contains": "padding" }
},
"params": [
{ "name": "ring_max", "expr": "min(width, height) / 2 - 16" },
{ "name": "ring_width", "expr": "max(12, (min(width, height) / 2) * 0.12)" },
{ "name": "ring_gap", "expr": "max(4, (min(width, height) / 2) * 0.03)" },
{ "name": "label_color", "value": "#000000" },
{ "name": "ring_background_opacity", "value": 0.3 },
{ "name": "ring0_percent", "value": 100 },
{ "name": "ring0_outer", "expr": "ring_max + 2" },
{ "name": "ring0_inner", "expr": "ring_max + 1" },
{ "name": "ring1_outer", "expr": "ring0_inner - ring_gap" },
{ "name": "ring1_inner", "expr": "ring1_outer - ring_width" },
{ "name": "ring1_middle", "expr": "(ring1_outer + ring1_inner) / 2" },
{ "name": "arc_size", "expr": "220" }
],
"transform": [
{ "as": "ratio", "calculate": "datum['$valueField'] / datum['$totalField']" },
{ "as": "_arc_start_degrees", "calculate": "360 - ( arc_size / 2 )" },
{ "as": "_arc_end_degrees", "calculate": "0 + ( arc_size / 2 )" },
{ "as": "_arc_start_radians", "calculate": "2 * 3.14 * ( datum['_arc_start_degrees'] - 360 ) / 360" },
{ "as": "_arc_end_radians", "calculate": "2 * 3.14 * datum['_arc_end_degrees'] / 360" },
{ "as": "_arc_total_radians", "calculate": "datum['_arc_end_radians'] - datum['_arc_start_radians']" },
{ "as": "_ring_start_radians", "calculate": "datum['_arc_start_radians']" },
{
"as": "_ring_end_radians",
"calculate": "datum['_arc_start_radians'] + ( datum['_arc_total_radians'] * datum['ratio'] )"
}
],
"layer": [
{
"mark": {
"type": "arc",
"color": "lightgrey",
"theta": { "expr": "datum['_arc_start_radians']" },
"radius": { "expr": "ring1_outer" },
"theta2": { "expr": "datum['_arc_end_radians']" },
"radius2": { "expr": "ring1_inner" },
"cornerRadius": 10
}
},
{
"name": "RING",
"mark": {
"type": "arc",
"theta": { "expr": "datum['_ring_start_radians']" },
"radius": { "expr": "ring1_outer" },
"theta2": { "expr": "datum['_ring_end_radians']" },
"radius2": { "expr": "ring1_inner" },
"cornerRadius": 10
},
"encoding": {
"color": {
"value": "#307E31",
"condition": [
{ "test": "datum['ratio'] < 0.33", "value": "#880808" },
{ "test": "datum['ratio'] < 0.66", "value": "#E49B0F" }
]
}
}
},
{
"mark": { "type": "text", "fontSize": 40 },
"encoding": {
"text": { "field": "$valueField" },
"color": {
"value": "#307E31",
"condition": [
{ "test": "datum['ratio'] < 0.33", "value": "#880808" },
{ "test": "datum['ratio'] < 0.66", "value": "#E49B0F" }
]
}
}
}
]
}
Radar grafik
$key ve $value öğelerini Alanlar bölümünde tanımlayın.
JSON belirtimi
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"width": "container",
"height": "container",
"config": {
"autosize": { "type": "fit", "contains": "padding" }
},
"data": { "name": "databricks_query" },
"transform": [
{ "window": [{ "op": "row_number", "as": "category" }] },
{ "calculate": "datum.category - 1", "as": "category" },
{
"joinaggregate": [
{ "op": "count", "as": "numCategories" },
{ "op": "max", "field": "$value", "as": "maxValue" }
]
},
{ "calculate": "2 * PI * datum.category / datum.numCategories", "as": "angle" },
{ "calculate": "100 * datum['$value'] / datum.maxValue", "as": "r" },
{ "calculate": "datum.r * cos(datum.angle)", "as": "x" },
{ "calculate": "datum.r * sin(datum.angle)", "as": "y" },
{ "calculate": "110 * cos(datum.angle)", "as": "label_x" },
{ "calculate": "110 * sin(datum.angle)", "as": "label_y" }
],
"layer": [
{
"transform": [
{ "joinaggregate": [{ "op": "count", "as": "numCategories" }] },
{ "aggregate": [{ "op": "max", "field": "numCategories", "as": "numCategories" }] },
{ "calculate": "[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]", "as": "cats" },
{ "flatten": ["cats"], "as": ["cat"] },
{ "filter": "datum.cat <= datum.numCategories" },
{ "calculate": "2 * PI * datum.cat / datum.numCategories", "as": "angle" },
{ "calculate": "100 * cos(datum.angle)", "as": "x" },
{ "calculate": "100 * sin(datum.angle)", "as": "y" }
],
"mark": { "type": "line", "color": "#ddd", "strokeWidth": 1 },
"encoding": {
"x": { "field": "x", "type": "quantitative", "scale": { "domain": [-120, 120] }, "axis": null },
"y": { "field": "y", "type": "quantitative", "scale": { "domain": [-120, 120] }, "axis": null },
"order": { "field": "cat" }
}
},
{
"transform": [
{ "joinaggregate": [{ "op": "count", "as": "numCategories" }] },
{ "aggregate": [{ "op": "max", "field": "numCategories", "as": "numCategories" }] },
{ "calculate": "[20,40,60,80,100]", "as": "levels" },
{ "flatten": ["levels"], "as": ["level"] },
{ "calculate": "[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]", "as": "cats" },
{ "flatten": ["cats"], "as": ["cat"] },
{ "filter": "datum.cat <= datum.numCategories" },
{ "calculate": "2 * PI * datum.cat / datum.numCategories", "as": "angle" },
{ "calculate": "datum.level", "as": "r" },
{ "calculate": "datum.r * cos(datum.angle)", "as": "x" },
{ "calculate": "datum.r * sin(datum.angle)", "as": "y" }
],
"mark": { "type": "line", "color": "#ddd", "strokeWidth": 1 },
"encoding": {
"x": { "field": "x", "type": "quantitative" },
"y": { "field": "y", "type": "quantitative" },
"detail": { "field": "level" },
"order": { "field": "cat" }
}
},
{
"mark": { "type": "line", "color": "#9467bd", "strokeWidth": 2, "interpolate": "linear-closed" },
"encoding": {
"x": { "field": "x", "type": "quantitative" },
"y": { "field": "y", "type": "quantitative" },
"order": { "field": "category" }
}
},
{
"mark": { "type": "point", "filled": true, "size": 50, "color": "#9467bd" },
"encoding": {
"x": { "field": "x", "type": "quantitative" },
"y": { "field": "y", "type": "quantitative" }
}
},
{
"mark": { "type": "text", "fontSize": 14, "fontWeight": "bold" },
"encoding": {
"x": { "field": "label_x", "type": "quantitative" },
"y": { "field": "label_y", "type": "quantitative" },
"text": { "field": "$key", "type": "nominal" }
}
}
],
"view": { "stroke": null }
}
Radyal grafik
$valueField ve $colorField öğelerini Alanlar bölümünde tanımlayın.
JSON belirtimi
{
"$schema": "https://vega.github.io/schema/vega-lite/v6.json",
"width": "container",
"height": "container",
"config": {
"autosize": { "type": "fit", "contains": "padding" }
},
"data": { "name": "databricks_query" },
"transform": [
{
"aggregate": [{ "op": "sum", "field": "$valueField", "as": "total" }],
"groupby": ["$colorField"]
},
{
"window": [{ "op": "rank", "as": "rank" }],
"sort": [{ "field": "total", "order": "descending" }]
}
],
"layer": [
{
"mark": { "type": "arc", "innerRadius": 20, "stroke": "#fff" }
}
],
"encoding": {
"theta": {
"field": "total",
"type": "quantitative",
"scale": { "type": "sqrt" },
"stack": true,
"sort": "descending"
},
"radius": { "field": "total", "scale": { "type": "sqrt", "zero": true } },
"color": {
"field": "$colorField",
"type": "nominal",
"title": "Sub-Category",
"sort": { "field": "total", "order": "descending" },
"legend": { "orient": "right" }
},
"tooltip": [
{ "field": "$colorField", "type": "nominal", "title": "Sub-Category" },
{ "field": "total", "type": "quantitative", "title": "Sales" }
]
},
"view": { "stroke": null }
}
Güneş ışığı grafiği
outerGroupField bölümünde , innerGroupFieldve sizeField tanımlayın.
JSON belirtimi
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"width": "container",
"height": "container",
"data": { "name": "databricks_query" },
"config": {
"autosize": { "type": "fit", "contains": "padding" }
},
"transform": [
{ "calculate": "datum['outerGroupField']", "as": "OUTSIDE" },
{ "calculate": "datum['innerGroupField']", "as": "INSIDE" },
{ "calculate": "datum.OUTSIDE + '-' + datum.INSIDE", "as": "OUT_IN" },
{ "calculate": "toNumber(datum['sizeField'])", "as": "SIZE" }
],
"resolve": {
"scale": { "color": "independent" },
"legend": { "color": "independent" }
},
"layer": [
{
"mark": {
"type": "arc",
"tooltip": true,
"innerRadius": { "expr": "min(width, height)/9" },
"outerRadius": { "expr": "min(width, height)/3" }
},
"encoding": {
"theta": { "field": "SIZE", "type": "quantitative", "stack": true },
"color": {
"field": "OUT_IN",
"type": "ordinal",
"sort": "ascending",
"title": "Inner Grouping",
"scale": {
"range": [
"#1DF9B9",
"#1DE5B9",
"#1DD1B9",
"#1DBDB9",
"#1DA9B9",
"#3DF23B",
"#3DDA3B",
"#3DC23B",
"#3DAA3B",
"#3D923B"
]
}
},
"order": { "field": "OUT_IN", "sort": "ascending" },
"tooltip": [
{ "field": "OUTSIDE", "type": "nominal", "title": "Outer Grouping" },
{ "field": "INSIDE", "type": "nominal", "title": "Inner Grouping" },
{ "field": "SIZE", "type": "quantitative", "title": "Count" }
]
}
},
{
"transform": [
{
"aggregate": [{ "op": "sum", "field": "SIZE", "as": "total_users" }],
"groupby": ["OUTSIDE"]
}
],
"mark": {
"type": "arc",
"tooltip": true,
"innerRadius": { "expr": "min(width, height)/3" }
},
"encoding": {
"theta": {
"field": "total_users",
"type": "quantitative",
"stack": true,
"sort": "ascending",
"title": "Users Count"
},
"color": {
"field": "OUTSIDE",
"type": "ordinal",
"sort": "ascending",
"title": "Outer Grouping",
"scale": { "range": ["#1DD1B9", "#3DC23B"] }
},
"order": { "field": "OUTSIDE", "sort": "ascending" },
"tooltip": [
{ "field": "OUTSIDE", "type": "nominal", "title": "Outer Grouping" },
{ "field": "total_users", "type": "quantitative", "title": "Count" }
]
}
}
]
}
Sınırlamalar
- Ağaç haritası grafikleri desteklenmez. Vega-Lite ağaç haritalarını desteklemez.
- Görüntü işaretleri yalnızca 37 KB veya daha az satır içi base64
data:resim URL'lerini (örneğin,data:image/png;base64,...) PNG, JPEG veya WebP biçiminde destekler. Uzak görüntü URL'leri (https:veyahttp:), göreli URL'ler, SVG görüntüleri ve alan veya ifade temelli görüntü URL'leri desteklenmez.