import pandas as pd
from lets_plot import *
LetsPlot.setup_html()
# Sample data
= ['Country A', 'Country B', 'Country C']
countries = [1000, 1200, 800]
gdp_2020 = [1300, 1250, 820]
gdp_2023
# Create a dataframe
= pd.DataFrame({'Year': '2020', 'Country': countries, 'GDP': gdp_2020})
df_2020 = pd.DataFrame({'Year': '2023', 'Country': countries, 'GDP': gdp_2023})
df_2023 = pd.concat([df_2020, df_2023])
df
# Slopegraph
= ggplot(df, aes(x='Year', y='GDP', group='Country')) + \
slopegraph ='Country'), size=1.5) + \
geom_line(aes(color='Country'), size=3) + \
geom_point(aes(color"Slopegraph: GDP Change from 2020 to 2023") + \
ggtitle(=0.002) + \
coord_fixed(ratio=element_text(angle=45, hjust=1)) + \
theme(axis_text_x='none')
theme(legend_position
slopegraph
Slopegraphs
Slopegraphs
Một slopegraph là một loại biểu đồ trực quan hóa dữ liệu, hiển thị sự thay đổi giữa hai điểm thời gian hoặc giữa hai điều kiện. Edward Tufte đã giới thiệu khái niệm này trong cuốn sách của ông “The Visual Display of Quantitative Information” vào năm 1983. Slopegraphs đặc biệt hữu ích để trực quan hóa sự thay đổi tương đối giữa hai điểm dữ liệu qua nhiều hạng mục.
Dưới đây là một ý tưởng tổng quan về cách slopegraph hoạt động:
Hai trục: Có hai trục dọc, một cho điểm thời gian ban đầu (hoặc điều kiện) và một cho điểm thời gian cuối cùng (hoặc điều kiện). Hai trục này song song và thường có cùng một tỷ lệ.
Hạng mục: Nhiều hạng mục hoặc mục được liệt kê giữa hai trục. Đối với mỗi hạng mục, có một điểm dữ liệu trên mỗi trục.
Độ dốc: Các đường được vẽ nối các điểm dữ liệu cho mỗi hạng mục giữa hai trục. Độ dốc của các đường này cho thấy sự thay đổi giá trị cho mỗi hạng mục. Độ dốc dương cho thấy sự tăng lên, trong khi độ dốc âm cho thấy sự giảm đi.
So sánh: Người xem có thể dễ dàng so sánh sự thay đổi giá trị qua các hạng mục bằng cách nhìn vào độ dốc của các đường.
Những ưu điểm chính của slopegraphs là:
Đơn giản: Chúng dễ hiểu, ngay cả đối với những người không quen thuộc với các kỹ thuật trực quan hóa dữ liệu.
Khả năng so sánh: Tính chất hai trục đứng cạnh nhau giúp dễ dàng so sánh sự thay đổi giữa nhiều hạng mục chỉ qua một cái nhìn.
Nhấn mạnh sự thay đổi: Slopegraphs đặc biệt hiệu quả khi nêu bật sự khác biệt trong sự thay đổi, thay vì giá trị tuyệt đối.
Tuy nhiên, chúng có thể không phải là lựa chọn tốt nhất khi:
Có quá nhiều hạng mục, làm cho biểu đồ bị rối và khó diễn giải.
Các điểm dữ liệu quá gần nhau, dẫn đến việc các đường chồng lên nhau.
Cần trực quan hóa nhiều hơn hai điểm thời gian hoặc điều kiện.
So sánh: Slopegraph và Barchart
Yếu tố | Slopegraph | Barchart |
---|---|---|
Mục đích | Thiết kế để hiển thị sự thay đổi giữa hai điểm thời gian hoặc hai điều kiện. Hiệu quả khi trực quan hóa sự thay đổi tương đối qua nhiều hạng mục. | Đa dạng và có thể biểu diễn số lượng cho dữ liệu danh mục. Hiển thị giá trị tuyệt đối cho các hạng mục khác nhau hoặc phân bố dữ liệu. |
Yếu tố trực quan | Sử dụng hai trục dọc với các đường nối các điểm dữ liệu giữa các trục. Độ dốc của các đường này biểu thị sự thay đổi. | Sử dụng các thanh có chiều dài (hoặc chiều cao) biến thiên để biểu diễn giá trị. Chiều dài hoặc chiều cao của mỗi thanh tỷ lệ thuận với giá trị nó biểu diễn. |
Ưu điểm | - Nhấn mạnh sự thay đổi tương đối giữa hai điểm dữ liệu. - So sánh rõ ràng cạnh nhau. - Đơn giản và tối giản. |
- Dễ hiểu và được công nhận rộng rãi. - Có thể biểu diễn nhiều hạng mục. - Có thể sử dụng cho cả dữ liệu danh danh và thứ tự. |
Hạn chế | - Tốt nhất khi so sánh chỉ hai điểm. - Có thể bị rối khi có nhiều hạng mục hoặc các điểm dữ liệu gần nhau. - Không lý tưởng để hiển thị giá trị tuyệt đối. |
- Không nhấn mạnh sự thay đổi tương đối một cách hiệu quả. - Có thể bị rối với nhiều hạng mục. - Yêu cầu nhiều không gian hơn so với các loại biểu đồ khác. |
# Barchart
= ggplot(df, aes(x='Country', y='GDP', fill='Year')) + \
barchart ='identity', position='dodge') + \
geom_bar(stat"Barchart: GDP Values for 2020 and 2023") + \
ggtitle(='top')
theme(legend_position
# Display
barchart