Chuyển đến nội dung chính

Hướng Dẫn Từng Bước Tạo Bản Đồ trong Python bằng Thư Viện Plotly

Làm dữ liệu của bạn nổi bật với những bản đồ ấn tượng tạo bằng Plotly trong Python
· 7 phút đọc

Khám phá cùng AI

Tuổi thọ theo quốc gia

Bản đồ đã được sử dụng qua nhiều thế kỷ để giúp con người định hướng và hiểu môi trường xung quanh. Trong kỷ nguyên dữ liệu lớn, bản đồ trở thành công cụ thiết yếu cho trực quan hóa dữ liệu. Chúng cho phép chúng ta hiển thị dữ liệu theo cách trực quan, tương tác và dễ hiểu. Bản đồ có thể giúp nhận diện các mẫu và mối quan hệ khó thấy ở những dạng trực quan khác.

Plotly là một thư viện trực quan hóa dữ liệu mạnh mẽ cho Python, cho phép bạn tạo nhiều dạng trực quan hóa tương tác, bao gồm cả bản đồ. Một lợi thế của Plotly là nó được thiết kế để hoạt động trơn tru với các thư viện Python khác như Pandas và NumPy. Điều này giúp việc nhập, xử lý dữ liệu và tạo trực quan hóa tùy biến theo nhu cầu cụ thể của bạn trở nên dễ dàng. Nếu bạn muốn học Plotly, hãy xem khóa học Giới thiệu Trực quan hóa Dữ liệu với Plotly trong Python của chúng tôi.

Trong hướng dẫn này, bạn sẽ học từng bước cách tạo và tùy biến các bản đồ đơn giản và tương tác bằng Plotly trong Python. Bạn cũng sẽ học cách tạo bản đồ Choropleth, một loại bản đồ dùng mã màu để biểu diễn dữ liệu cho các khu vực địa lý cụ thể như quốc gia, bang hay thành phố.

Các Trực Quan Hóa Bản Đồ Phổ Biến trong Plotly

Hãy bắt đầu bằng cách xem một số loại bản đồ Plotly mà bạn có thể tạo.

Biểu đồ ScatterGeo

Hàm Scattergeo() được dùng để tạo biểu đồ phân tán trên bản đồ địa lý. Nghĩa là bạn có thể vẽ các điểm trên bản đồ, mỗi điểm đại diện cho một vị trí địa lý cụ thể như một thành phố hay một địa danh.

Ví dụ, nếu bạn có một tập dữ liệu chứa tọa độ vĩ độ và kinh độ của các thành phố trên thế giới, bạn có thể dùng Scattergeo() để vẽ từng thành phố lên bản đồ thế giới.

Mỗi điểm trên bản đồ sẽ biểu diễn vị trí của một thành phố, và bạn có thể tùy biến kích thước, màu sắc, hình dạng của mỗi điểm để thể hiện các đặc trưng khác nhau của thành phố như dân số hoặc nhiệt độ.

Hàm này thường được dùng trong các ứng dụng trực quan hóa và phân tích dữ liệu như dự báo thời tiết, phân tích dân số và lập bản đồ kinh doanh. Nó giúp bạn trực quan hóa dữ liệu một cách ý nghĩa hơn bằng cách cho thấy phân bố không gian của các điểm dữ liệu và làm nổi bật những mẫu hoặc xu hướng có thể không thấy trong bảng hay biểu đồ.

Ví dụ tạo biểu đồ ScatterGeo trong Plotly

import plotly.express as px
import pandas as pd


# Import data from USGS
data = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.csv')


# Drop rows with missing or invalid values in the 'mag' column
data = data.dropna(subset=['mag'])
data = data[data.mag >= 0]


# Create scatter map
fig = px.scatter_geo(data, lat='latitude', lon='longitude', color='mag',
                     hover_name='place', #size='mag',
                     title='Earthquakes Around the World')
fig.show()

Đầu ra: 

first plotly output

Ví dụ mã này dùng Plotly để tạo bản đồ địa lý tương tác các vị trí động đất trên toàn cầu. Nó nhập dữ liệu động đất từ trang USGS vào một DataFrame của pandas và loại bỏ các hàng có giá trị độ lớn bị thiếu hoặc không hợp lệ.

Sau đó, mã dùng phương thức px.scatter_geo để tạo bản đồ phân tán hiển thị vị trí động đất, với những trận động đất lớn hơn được hiển thị bằng màu đậm hơn. Tham số hover_name được thiết lập để hiển thị tên địa điểm khi rê chuột lên điểm đánh dấu.

Cuối cùng, mã đặt tiêu đề bản đồ và hiển thị bản đồ bằng fig.show(). Loại bản đồ này có thể dùng để khám phá các mẫu động đất và hiểu thêm về hoạt động địa chấn toàn cầu.

Tùy biến các biểu đồ cơ bản

1. Thay đổi thang màu: Tham số color trong hàm scatter_geo ánh xạ độ lớn của động đất vào màu của điểm đánh dấu. Bạn có thể tùy chỉnh thang màu để biểu diễn giá trị độ lớn tốt hơn.

fig = px.scatter_geo(data, lat='latitude', lon='longitude', color='mag',
                     hover_name='place', color_continuous_scale='reds',
                     title='Earthquakes Around the World')
fig.show()

Đầu ra:

Output 2

2. Thay đổi kích thước điểm đánh dấu: Bạn có thể tùy chỉnh kích thước điểm đánh dấu để biểu diễn độ lớn của động đất tốt hơn.

fig = px.scatter_geo(data, lat='latitude', lon='longitude', color='mag',
                     hover_name='place', size='mag', size_max=10,
                     title='Earthquakes Around the World')
fig.show()

Đầu ra:

Output 3

3. Thay đổi màu nền: Bạn có thể đổi màu nền của bản đồ để tăng tính thẩm mỹ.

fig = px.scatter_geo(data, lat='latitude', lon='longitude', color='mag',
                     hover_name='place', color_continuous_scale='reds',
                     title='Earthquakes Around the World')
fig.update_layout(geo=dict(bgcolor='black'))
fig.show()

Output 4

Nếu bạn muốn tìm hiểu thêm về khả năng trực quan hóa và tùy biến nâng cao trong Plotly, hãy xem Hướng dẫn Python Plotly Express: Khai mở Các Trực Quan Hóa Đẹp mắt của Bekhruz Tuychiev.

Lưu bản đồ thành tệp HTML tương tác

Bạn có thể lưu một hình Plotly dưới dạng tệp HTML bằng hàm write_html() từ mô-đun plotly.io. Ví dụ:

import plotly.io as pio
pio.write_html(fig, file='earthquakes.html', auto_open=True)

Output 5

Bản đồ Choropleth

Bản đồ choropleth là loại bản đồ dùng các màu sắc hoặc sắc độ khác nhau để biểu diễn giá trị dữ liệu ở các vùng, như quốc gia, bang hoặc tỉnh. Trên bản đồ choropleth, mỗi vùng được tô màu theo giá trị của một biến dữ liệu cụ thể, chẳng hạn dân số, thu nhập hoặc nhiệt độ.

Bản đồ choropleth có thể dùng trong nhiều ứng dụng như lập bản đồ bầu cử, phân tích nhân khẩu học và trực quan hóa dữ liệu địa lý. Chúng giúp bạn thấy các mẫu và xu hướng trong dữ liệu mà có thể không rõ ràng trong bảng hay biểu đồ và là cách mạnh mẽ để truyền đạt thông tin tới khán giả.

Mặc dù cả hai hàm scatter_geo và Choropleth trong Plotly đều dùng để tạo trực quan hóa địa lý, chúng khác nhau về loại dữ liệu phù hợp nhất và cách biểu diễn dữ liệu trên bản đồ. Hàm scatter_geo phù hợp nhất để vẽ các điểm dữ liệu riêng lẻ trên bản đồ, mỗi điểm đại diện cho một vị trí địa lý cụ thể như thành phố, địa danh hoặc trận động đất.

Ngược lại, hàm Choropleth dùng để trực quan hóa dữ liệu được tổng hợp hoặc lấy trung bình theo vùng, như quốc gia, bang hoặc tỉnh. Mỗi vùng được tô bóng hoặc tô màu theo giá trị của một biến dữ liệu cụ thể, như mật độ dân số, thu nhập trung bình hoặc tỷ lệ thất nghiệp.

Ví dụ tạo bản đồ Choropleth trong Plotly

import plotly.express as px
import pandas as pd


# Import data from GitHub
data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder_with_codes.csv')


# Create basic choropleth map
fig = px.choropleth(data, locations='iso_alpha', color='gdpPercap', hover_name='country',
                    projection='natural earth', title='GDP per Capita by Country')
fig.show()

Đầu ra:

Output 6

Lưu ý rằng trong dataframe của chúng ta có khung thời gian year. Nó kéo dài từ 1952 đến 2007. Chúng ta có thể dùng chiều dữ liệu này để tạo hoạt ảnh cho trực quan hóa. Xem ví dụ dưới đây.

Tập Dữ Liệu Mẫu:

Sample Dataset

import plotly.express as px
import pandas as pd


# Import data from GitHub
data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder_with_codes.csv')


# Create basic choropleth map
fig = px.choropleth(data, locations='iso_alpha', color='gdpPercap', hover_name='country',
                    projection='natural earth', animation_frame='year',
                    title='GDP per Capita by Country')
fig.show()

Đầu ra: 

Output 7

Kết luận

Bản đồ là yếu tố thiết yếu cho trực quan hóa dữ liệu trong kỷ nguyên dữ liệu lớn. Plotly là thư viện trực quan hóa mạnh mẽ cho Python, cho phép bạn tạo nhiều loại bản đồ tương tác. Với Scattergeo, bạn có thể vẽ các điểm dữ liệu tương ứng với vị trí địa lý cụ thể, trong khi Choropleth lý tưởng để trực quan hóa dữ liệu tổng hợp theo các chiều như vùng, thành phố, quốc gia, v.v.

Nếu bạn muốn khám phá thêm các tùy biến nâng cao trong Plotly hoặc tìm hiểu thêm về khả năng của nó, hãy xem Cheat Sheet Python Plotly Express, cung cấp tham chiếu nhanh cho các hàm và tùy chọn Plotly được dùng phổ biến nhất.

Moez Ali

Tác giả

Moez Ali

Nhà khoa học dữ liệu, Nhà sáng lập & Người tạo ra PyCaret

Chủ đề

Liên quan