Trong bài viết này, chúng ta sẽ khám phá cách thay đổi màu sắc, font chữ và giao diện đồ họa của biểu đồ sử dụng thư viện Python Plotly. Các chủ đề sẽ được bàn luận trong hướng dẫn này bao gồm:
1. Giới thiệu về Plotly
2. Cài đặt Plotly
3. Các loại biểu đồ Plotly
4. Tùy chỉnh màu sắc trong biểu đồ Plotly
5. Tùy chỉnh font chữ trong biểu đồ Plotly
6. Tùy chỉnh giao diện đồ họa của biểu đồ Plotly
1. Giới thiệu về Plotly
Plotly là một thư viện được sử dụng để tạo các biểu đồ tương tác và trực quan sử dụng trong các ứng dụng dữ liệu và các báo cáo. Nó cung cấp một loạt các công cụ cho phép người sử dụng tạo các biểu đồ đẹp và dễ hiểu một cách rất dễ dàng.
Các tính năng chính của Plotly bao gồm:
- Hỗ trợ cho các loại biểu đồ khác nhau bao gồm đường, cột, hình tròn, radar, sunburst, vv.
- Giúp tạo ra các biểu đồ tương tác bằng cách thêm các tính năng như: tooltip, hover-over labels, clickable points, vv.
- Hỗ trợ để tạo ra các biểu đồ 3D và các loại biểu đồ khoa học như biểu đồ dò sóng, scatter3D, vv.
- Có khả năng tạo biểu đồ với độ phân giải cao và chất lượng tốt cho việc in ấn hoặc chia sẻ trực tuyến
- Cho phép lưu biểu đồ với định dạng HTML, SVG, PNG, vv.
2. Cài đặt Plotly
Trước khi chúng ta bắt đầu, chúng ta cần cài đặt thư viện Plotly. Nếu bạn chưa có nó, bạn có thể cài đặt Plotly bằng cách sử dụng pip. Bạn có thể sử dụng lệnh sau đây trên Terminal hoặc Command Prompt để cài đặt thư viện Plotly:
pip install plotly
Ngoài ra, chúng ta còn cần phải cài đặt một số thư viện phụ trợ nếu chưa có trong môi trường máy tính. Ví dụ: pandas, numpy, scipy, etc.
3. Các loại biểu đồ Plotly
Plotly hỗ trợ cho nhiều loại biểu đồ khác nhau. Dưới đây là một số công cụ chính và hướng dẫn cơ bản để tạo ra chúng:
a. Biểu đồ đường (Line Chart)
Biểu đồ đường là loại biểu đồ được sử dụng để mô tả sự thay đổi hoặc xu hướng trong dữ liệu qua các điểm dữ liệu đã được liên kết với nhau bằng các đường thẳng.
import plotly.graph_objs as go
fig = go.Figure(data=go.Scatter(x=[1, 2, 3], y=[4, 5, 6]))
fig.show()

b. Biểu đồ cột (Bar Chart)
Biểu đồ cột là loại biểu đồ được sử dụng để hiển thị giá trị của một số dữ liệu trong một khoảng thời gian nhất định bằng các cột dọc hoặc ngang.
import plotly.graph_objs as go
fig = go.Figure(data=go.Bar(x=['A', 'B', 'C'], y=[4, 5, 6]))
fig.show()

c. Biểu đồ hình tròn (Pie Chart)
Biểu đồ hình tròn là loại biểu đồ được sử dụng để hiển thị tỉ lệ phần trăm của dữ liệu bằng một hình tròn. Các phần của hình tròn được chia ra bởi các cung có diện tích ưu tiên phù hợp với tỉ lệ phần trăm của dữ liệu.
import plotly.graph_objs as go
fig = go.Figure(data=[go.Pie(labels=['A', 'B', 'C'], values=[4, 5, 6])])
fig.show()

d. Biểu đồ radar (Radar Chart)
Biểu đồ radar hoặc biểu đồ dải (Spider Chart) được sử dụng để mô tả đặc tính của dữ liệu thông qua một mạng lưới số lượng giá trị đều nhau.
import plotly.graph_objs as go
fig = go.Figure()
fig.add_trace(go.Scatterpolar(
r=[1, 5, 2, 2, 3],
theta=['A', 'B', 'C', 'D', 'E'],
fill='toself'
))
fig.show()

e. Biểu đồ sunbursts
Biểu đồ sunburst được sử dụng để hiển thị cấu trúc cây của dữ liệu.
import plotly.graph_objs as go
fig =go.Figure(go.Sunburst(
labels=["A", "B", "C", "D", "E", "F", "G", "H", "I"],
parents=["", "A", "B", "B", "C", "D", "D", "E", "E"],
values=[10, 14, 12, 3, 3, 2, 2, 1, 1],
))
fig.show()

4. Tùy chỉnh màu sắc trong biểu đồ Plotly
Màu sắc là một trong những yếu tố quan trọng giúp cho biểu đồ của chúng ta trở nên sinh động, trực quan và đẹp mắt. Plotly cho phép chúng ta tùy chỉnh màu sắc của các điểm dữ liệu, đường, cột, hình tròn, sunburst hoặc bất cứ một thành phần nào khác của biểu đồ.
Chúng ta có thể tùy chỉnh màu sắc bằng cách sử dụng tham số color trong giá trị của mỗi đường, cột, điểm dữ liệu hoặc mặc định cho toàn bộ biểu đồ.
Ví dụ, ta sẽ tạo ra một biểu đồ đường với màu sắc của các đường là khác nhau.
import plotly.graph_objs as go
x = [1, 2, 3, 4, 5]
y1 = [1, 3, 2, 4, 3]
y2 = [2, 2, 2, 2, 2]
y3 = [4, 3, 5, 4, 5]
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y1, name='Line 1', line=dict(color='firebrick', width=4)))
fig.add_trace(go.Scatter(x=x, y=y2, name='Line 2', line=dict(color='royalblue', width=4)))
fig.add_trace(go.Scatter(x=x, y=y3, name='Line 3', line=dict(color='grey', width=4)))
fig.update_layout(title='Customize Color in Plotly Line Chart')
fig.show()

Bạn cũng có thể thay đổi màu sắc của toàn bộ biểu đồ bằng cách sử dụng đối tượng layout và các thuộc tính màu sắc được bao gồm như title, background_color, font_color.
import plotly.graph_objs as go
x = [1, 2, 3, 4, 5]
y1 = [1, 3, 2, 4, 3]
y2 = [2, 2, 2, 2, 2]
y3 = [4, 3, 5, 4, 5]
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y1, name='Line 1', line=dict(color='firebrick', width=4)))
fig.add_trace(go.Scatter(x=x, y=y2, name='Line 2', line=dict(color='royalblue', width=4)))
fig.add_trace(go.Scatter(x=x, y=y3, name='Line 3', line=dict(color='grey', width=4)))
fig.update_layout(title='Customize Color in Plotly Line Chart',
title_font_color="white",
paper_bgcolor='black',
plot_bgcolor='black')
fig.show()

5. Tùy chỉnh font chữ trong biểu đồ Plotly
Ngoài tùy chỉnh màu sắc, font chữ là một yếu tố quan trọng nữa trong việc tạo ra một biểu đồ đẹp và dễ đọc. Plotly cũng cung cấp cho chúng ta các khả năng để tùy chỉnh font chữ của mỗi thành phần trong biểu đồ.
Chúng ta có thể tùy chỉnh font chữ cho toàn bộ biểu đồ bằng cách sử dụng đối tượng layout và các thuộc tính font như font_family, font_size, font_color.
Ví dụ, ta sẽ tạo ra một biểu đồ đường với font chữ là Arial và màu chữ là trắng.
import plotly.graph_objs as go
x = [1, 2, 3, 4, 5]
y1 = [1, 3, 2, 4, 3]
y2 = [2, 2, 2, 2, 2]
y3 = [4, 3, 5, 4, 5]
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y1, name='Line 1', line=dict(color='firebrick', width=4)))
fig.add_trace(go.Scatter(x=x, y=y2, name='Line 2', line=dict(color='royalblue', width=4)))
fig.add_trace(go.Scatter(x=x, y=y3, name='Line 3', line=dict(color='grey', width=4)))
fig.update_layout(title='Customize Font in Plotly Line Chart',
title_font_family='Arial',
title_font_color="white",
title_font_size=20,
xaxis=dict(title='X-axis', titlefont_family='Arial', titlefont_size=14,
tickfont_family='Arial', tickfont_size=12, title_standoff=20),
yaxis=dict(title='Y-axis', titlefont_family='Arial', titlefont_size=14,
tickfont_family='Arial', tickfont_size=12, title_standoff=20),
font_family='Arial',
font_color='white',
font_size=12,
paper_bgcolor='black',
plot_bgcolor='black')
fig.show()

6. Tùy chỉnh giao diện đồ họa của biểu đồ Plotly
Plotly cung cấp cho chúng ta khả năng tùy chỉnh giao diện đồ họa của biểu đồ, trong đó bao gồm cả kích thước, độ phân giải, margin, padding. Các thuộc tính được cung cấp bởi đối tượng layout.
import plotly.graph_objs as go
x = [1, 2, 3, 4, 5]
y1 = [1, 3, 2, 4, 3]
y2 = [2, 2, 2, 2, 2]
y3 = [4, 3, 5, 4, 5]
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=y1, name='Line 1', line=dict(color='firebrick', width=4)))
fig.add_trace(go.Scatter(x=x, y=y2, name='Line 2', line=dict(color='royalblue', width=4)))
fig.add_trace(go.Scatter(x=x, y=y3, name='Line 3', line=dict(color='grey', width=4)))
fig.update_layout(title='Customize Layout in Plotly Line Chart',
title_font_family='Arial',
title_font_color="white",
title_font_size=20,
xaxis=dict(title='X-axis', titlefont_family='Arial', titlefont_size=14,
tickfont_family='Arial', tickfont_size=12, title_standoff=20),
yaxis=dict(title='Y-axis', titlefont_family='Arial', titlefont_size=14,
tickfont_family='Arial', tickfont_size=12, title_standoff=20),
font_family='Arial',
font_color='white',
font_size=12,
paper_bgcolor='black',
plot_bgcolor='black',
width=600,
height=400,
margin=dict(l=40, r=40, t=60, b=60),
shapes=[
dict(type='rect', xref='x', yref='y', x0=2, y0=0, x1=4, y1=6, line=dict(color='royalblue', width=2))
],
)
fig.show()

Trong ví dụ trên, giá trị của thuộc tính width và height được sử dụng để thiết lập kích thước của biểu đồ, thuộc tính margin được sử dụng để thiết lập vùng margin của biểu đồ. Bạn cũng có thể sử dụng thuộc tính padding để tạo khoảng cách giữa biểu đồ và các đường viền của chúng.
Chúng ta có thể sử dụng thuộc tính shapes để vẽ các hình dạng bên trong biểu đồ. Trong ví dụ trên, chúng ta đã sử dụng đối tượng rect để vẽ một hình chữ nhật màu xanh lam. Nó được xác định bởi tọa độ x0, y0, x1, y1 và được thiết lập bằng cách sử dụng đối tượng line.
Kết luận:
Như vậy, chúng ta đã tìm hiểu các cách để tùy chỉnh giao diện và nhìn thấy rằng Plotly cung cấp cho chúng ta nhiều khả năng để thiết kế một biểu đồ phức tạp hoặc đơn giản, tùy chỉnh thành phần font, màu sắc và giao diện đồ họa. Chúng ta cũng đã thấy cách sử dụng các công cụ và đối tượng trong Plotly để tạo ra các loại biểu đồ khác nhau như line chart, bar chart, pie chart, radar chart, sunburst chart,… Ở cuối bài, chúng ta đã tạo ra một ví dụ hoàn chỉnh để kết hợp tất cả các khái niệm chúng ta đã học được và tạo ra một bộ biểu đồ tuyệt đẹp bằng python.
