Grafik garis secara default menampilkan semua titik data dengan penanda, yang dapat mengurangi kejelasan visualisasi, terutama saat terdapat banyak data. Dengan memanfaatkan DAX, kita dapat mengontrol tampilan titik data dan hanya menampilkan titik-titik yang paling signifikan, seperti nilai maksimum, minimum, atau titik awal dan akhir.
Bagian 1: Mengidentifikasi Nilai Maksimum dan Minimum
Karena penanda hanya merepresentasikan nilai tunggal pada suatu titik waktu, garis lebih cocok untuk memvisualisasikan tren dari waktu ke waktu. Sebagai ilustrasi, kita akan menggunakan dataset World Economic Indicator dari Maven Analytics. Sebagai langkah awal, kita akan membuat ukuran baru (new measures) untuk menghitung rata-rata angka kelahiran dan kematian.
Avg. Birth Rate = AVERAGE('Development Indicators'[Birth rate, crude (per 1,000 people)])
Kita akan membuat grafik garis menggunakan tabel ‘Development Indicators’, dengan sumbu x sebagai tahun dan sumbu y sebagai nilai ukuran ‘Avg. Birth Rate’ dan ‘Avg. Death Rate’.
Bagian 2: Mengidentifikasi Nilai Maksimum dan Minimum
Untuk mengidentifikasi titik tertinggi pada grafik garis, yaitu angka kelahiran dan kematian rata-rata maksimum, kita akan membuat sebuah ukuran baru menggunakan DAX.
Max_Avg. Birth Rate =
VAR max_val =
MAXX(
ALL('Development Indicators'[Year]),
[Avg. Birth Rate] )
VAR check = IF(max_val = [Avg. Birth Rate], max_val, BLANK() )
RETURN
check
Untuk mengidentifikasi titik terendah pada grafik garis, yaitu angka kelahiran dan kematian rata-rata minimum, kita akan membuat sebuah ukuran baru menggunakan DAX.
Min_Avg. Birth Rate =
VAR min_val =
MINX(
ALL('Development Indicators'[Year]),
[Avg. Birth Rate]
)
VAR check = IF(min_val = [Avg. Birth Rate], min_val, BLANK() )
RETURN
check
Bagian 3: Mengidentifikasi Nilai Awal dan Akhir
Dengan menggunakan DAX, kita akan membuat ukuran baru untuk menampilkan data dari rata-rata angka kelahiran dan kematian pada tahun paling awal pada grafik garis, dengan mengabaikan tahun yang tidak memiliki data.
First_Avg. Birth Rate =
VAR FirstNonBlankYear =
CALCULATE(
MIN('Development Indicators'[Year]),
FILTER(
ALL('Development Indicators'[Year]),
NOT(ISBLANK([Avg. Birth Rate]))
)
)
VAR Result =
SWITCH(
TRUE(),
SELECTEDVALUE('Development Indicators'[Year]) = FirstNonBlankYear, [Avg. Birth Rate],
BLANK()
)
RETURN
Result
Selanjutnya, kita juga akan membuat ukuran baru untuk menampilkan data dari rata-rata angka kelahiran dan kematian pada tahun paling akhir pada grafik garis, dengan mengabaikan tahun yang tidak memiliki data.
Last_Avg. Birth Rate =
VAR LastNonBlankYear =
CALCULATE(
MAX('Development Indicators'[Year]),
FILTER(
ALL('Development Indicators'[Year]),
NOT(ISBLANK([Avg. Birth Rate]))
)
)
VAR Result =
SWITCH(
TRUE(),
SELECTEDVALUE('Development Indicators'[Year]) = LastNonBlankYear, [Avg. Birth Rate],
BLANK()
)
RETURN
Result
Bagian 4: Mengaplikasikan Conditional Formatting Pada Label Data
Dalam beberapa situasi, nilai rata-rata kelahiran atau kematian yang paling tinggi atau paling rendah sama persis dengan nilai pada tahun pertama atau terakhir data. Akibatnya, ketika kita membuat grafik, label data akan bertumpuk di satu titik. Untuk menghindari tampilan yang membingungkan, kita akan mengatur format tampilan data. Jika nilai tertinggi atau terendah sama dengan nilai awal atau akhir, label datanya akan dibuat transparan sehingga tidak terlihat.
CF_Min Avg. Birth Rate =
IF(
[Min_Avg. Birth Rate] = [First_Avg. Birth Rate] || [Min_Avg. Birth Rate] = [Last_Avg. Birth Rate],
"#FFFFFF00", -- Transparent effect (white with alpha for full transparency)
"#666666" -- Highlight color (dark grayish)
)
CF_Max Avg. Birth Rate =
IF(
[Max_Avg. Birth Rate] = [First_Avg. Birth Rate] || [Max_Avg. Birth Rate] = [Last_Avg. Birth Rate],
"#FFFFFF00", -- Transparent effect (white with alpha for full transparency)
"#666666" -- Highlight color (dark grayish)
)
Bagian 5: Mengatur Konfigurasi pada Grafik Garis
Setelah kita membuat seluruh kalkulasi yang diperlukan, langkah selanjutnya adalah:
1. Membuat Grafik Garis
Tempatkan seluruh hasil perhitungan di atas pada sumbu Y grafik garis.
2. Menentukan Warna:
Gunakan warna hijau untuk mewakili angka kelahiran dan warna merah untuk angka kematian.
3. Menandai Titik Penting
Tandai tahun pertama (First_Avg. Birth Rate, First_Avg. Death Rate), tahun terakhir (Last_Avg. Birth Rate & Last_Avg. Death Rate), nilai tertinggi (Max_Avg. Birth Rate & Max_Avg. Death Rate), dan nilai terendah (Min_Avg. Birth Rate & Min_Avg. Death Rate) dengan titik (markers) pada grafik. Tambahkan label data pada setiap titik untuk menunjukkan nilainya.
4. Menambahkan Label Seri (Series Labels)
Tampilkan label “Avg. Birth Rate” dan “Avg. Death Rate” di samping kanan garis masing-masing.
5. Memformat Label Data (Data Labels)
Atur agar label data untuk nilai tertinggi dan terendah (Max_Avg. Death Rate, Max_Avg. Birth Rate, Min_Avg. Death Rate & Min_Avg. Death Rate) hanya muncul jika tidak tumpang tindih dengan data tahun pertama atau terakhir (First_Avg. Death Rate, First_Avg. Birth Rate, Last_Avg. Birth Rate, Last_Avg. Death Rate). Jika terjadi tumpang tindih, buat label tersebut transparan menggunakan kalkulasi yang telah dibuat pada bagian 4 (CF_Min. Avg Birth Rate, CF_Max. Avg Death Rate, CF_Min. Avg Birth Rate, CF_Max. Avg Death Rate).
Bagian 6 (Opsional):
Menambahkan Teks untuk Menandakan Nilai Tertinggi, Terendah, Awal, dan Akhir Secara Dinamis
Keberadaan nilai kosong (missing values) pada data awal atau akhir periode dapat menyebabkan teks tidak akan terlihat pada grafik. Untuk memastikan teks tetap muncul pada data yang ada, kita akan menggunakan rumus DAX. Rumus ini akan mengabaikan data kosong dan hanya menampilkan teks pada tahun awal dan akhir yang memiliki nilai.
Latest Year_Avg. Birth Rate_Detail Label =
VAR LastNonBlankYear =
CALCULATE(
MAX('Development Indicators'[Year]), -- Get the latest year for the selected country
FILTER(
'Development Indicators',
NOT(ISBLANK([Avg. Birth Rate])) -- Ensure the value is not blank
)
)
VAR Result =
IF(
SELECTEDVALUE('Development Indicators'[Year]) = LastNonBlankYear && NOT(ISBLANK([Avg. Birth Rate])),
"Last",
BLANK()
)
RETURN
Result
Earliest Year_Avg. Birth Rate_Detail Label =
VAR FirstNonBlankYear =
CALCULATE(
MIN('Development Indicators'[Year]), -- Get the earliest year for the selected country
FILTER(
'Development Indicators',
NOT(ISBLANK([Avg. Birth Rate])) -- Ensure the value is not blank
)
)
VAR Result =
IF(
SELECTEDVALUE('Development Indicators'[Year]) = FirstNonBlankYear && NOT(ISBLANK([Avg. Birth Rate])),
"First",
BLANK()
)
RETURN
Result
Bagian 7: Menampilkan Garis Galat (Error Bars) pada Grafik Garis
Meskipun garis galat (error bars) umumnya digunakan untuk menunjukkan tingkat ketidakpastian atau variabilitas data, dalam konteks tertentu, garis galat juga dapat membantu mengidentifikasi titik data yang tidak memiliki nilai (missing values) atau anomali. Selain itu, panjang garis galat dapat memberikan indikasi kasar mengenai besarnya perubahan dari satu titik data ke titik data lainnya.
Untuk membuat garis galat, kita perlu menentukan dua nilai batas: batas bawah (lower limit) dan batas atas (upper limit). Untuk batas bawah, kita akan menetapkan garis dasar (baseline) pada nol di sumbu y, memastikan bar dimulai dari titik ini. Batas atas akan ditentukan dengan menggunakan rata-rata tingkat kematian (average death rate) dan kelahiran (average birth rate) untuk setiap garis, yang membantu mewakili potensi variabilitas dalam data.
Berikut adalah measure untuk menetapkan garis dasar atau baseline:
Baseline = 0