Nhảy tới nội dung

Biểu diễn dữ liệu trực quan

"Giới thiệu"

Vnstock3 cung cấp khả năng biểu diễn dữ liệu trực quan giúp bạn khám phá nhanh đặc tính của dữ liệu cho bất kỳ DataFrame, Series được trả về. Các loại đồ thị được giới thiệu trong gói thư viện vnstock_ezchart nay được tích hợp trực tiếp vào Vnstock3 giúp bạn sử dụng thuận tiện chỉ với 1 câu lệnh đơn giản vẫn cho ra biểu đồ đẹp mắt và sẵn sàng để chia sẻ.

Sử dụng đơn giản

Notebook minh hoạ

Bạn có thể truy cập ngay Notebook minh hoạ tính năng tại đây.

Truy cập tính năng

Từ DataFrame, Series trả về bởi Vnstock3, bạn có thể truy cập lớp (class) hàm biểu diễn dữ liệu dưới dạng thuộc tính .viz.gọi_tên_hàm(). Ví dụ, cú pháp vẽ đồ thị timeseries cho cột close trong DataFrame có tên df như sau:

df.viz.timeseries()

Kết quả trả về như hình bên dưới. Bạn có thể tinh chỉnh biểu đồ với các tham số được cung cấp để nhanh chóng tạo ra biểu đồ vừa đơn giản nhưng cũng đầy chuyên nghiệp để có thể chia sẻ dễ dàng.:

Xem trợ giúp nhanh chóng

"Gợi ý"

Bạn có thể xem hướng dẫn cho từng loại biểu đồ một cách chi tiết bằng cách gọi hàm help() theo sau lớp hàm .viz. Ví dụ, từ DataFrame, Series bất kỳ, ví dụ gọi hàm df.viz.help('timeseries) trên DataFrame có tên df sẽ trả về hướng dẫn chi tiết sử dụng hàm biểu diễn dữ liệu timeseries.

Hướng dẫn hàm timeseries
Biểu diễn dữ liệu theo thời gian (timeseries). Dữ liệu cần có cột index là kiểu dữ liệu datetime.

Tham số:
- data (pd.DataFrame hoặc pd.Series): Dữ liệu đầu vào dạng DataFrame hoặc Series.
- title (str): Tiêu đề của biểu đồ.
- title_fontsize (int): Cỡ chữ cho tiêu đề.
- xlabel (str): Nhãn cho trục X.
- ylabel (str): Nhãn cho trục Y.
- color_palette (str): Tên của bảng màu đã được định trước hoặc danh sách các màu tùy chỉnh. Mặc định là 'vnstock'. Các bảng màu có sẵn: 'percentage', 'amount', 'category', 'trend', 'flatui', 'vnstock', 'learn_anything'. Có thể liệt kê tất cả bảng màu với Utils.brand_palettes.keys().
- palette_shuffle (bool): Xáo trộn thứ tự màu sắc trong bảng màu, cho phép chọn màu ngẫu nhiên trong bảng màu để biểu diễn cho đến khi bạn ưng ý. Mặc định là False.
- grid (bool): Hiển thị lưới. Nhận True để hiện thị hoặc False để ẩn lưới.
- data_labels (bool): Hiển thị nhãn dữ liệu trên biểu đồ.
- data_label_format (str): Định dạng cho nhãn dữ liệu. Nhận các giá trị rút gọn như 1K, 1M, 1B, 1T tương ứng với 1 ngàn, 1 triệu, 1 tỷ, 1 nghìn tỷ.
- label_fontsize (int): Cỡ chữ cho nhãn trục X và Y.
- legend_title (str): Tiêu đề cho chú giải.
- show_legend (bool): Hiển thị chú giải. Nhận True để hiển thị hoặc False để ẩn chú giải.
- series_names (list): Danh sách tên cho các dải (series) dữ liệu trong biểu đồ. Nhận giá trị là 1 danh sách (list).
- font_name (str): Tên của font chữ muốn áp dụng.
- figsize (tuple): Kích thước của biểu đồ, ví dụ (10, 6).
- show_xaxis (bool): Hiển thị trục X. Nhận True để hiển thị hoặc False để ẩn trục X.
- show_yaxis (bool): Hiển thị trục Y. Nhận True để hiển thị hoặc False để ẩn trục Y.
- tick_labelsize (int): Cỡ chữ cho các nhãn trục.
- xtick_format (str): Định dạng cho nhãn trục X. Ví dụ định dạng số thập phân '{:.0f}'.
- ytick_format (str): Định dạng cho nhãn trục Y. Ví dụ định dạng phần trăm '{:.0%}'.
- tick_rotation (int): Góc quay cho các nhãn trục.
- xlim (tuple): Giới hạn cho trục X, ví dụ (0, 100).
- ylim (tuple): Giới hạn cho trục Y, ví dụ (0, 100).
- background_color (str): Màu nền cho biểu đồ.
- bar_edge_color (str): Màu viền cho các cột (bar) trong biểu đồ.

Biểu diễn xu hướng

Timeseries

df['close'].viz.timeseries(figsize=(10, 6),
title='Giá đóng cửa - Hợp đồng tương lai VN30F1M',
ylabel='Giá',
xlabel='Thời gian',
color_palette='vnstock',
palette_shuffle=True)

Trong đó là df là DataFrame dữ liệu mẫu giá cổ phiếu được gọi từ mục Thống kê giá lịch sử.

Combo chart

df.viz.combo(bar_data='volume',
line_data='close',
title='Giá đóng cửa và khối lượng giao dịch - Hợp đồng tương lai VN30F1M',
left_ylabel='Volume (M)', right_ylabel='Price (K)',
figsize=(10, 6),
color_palette='stock',
palette_shuffle=True)

Biểu diễn số lượng

Barplot

income_df[['LN trước thuế', 'Lợi nhuận thuần']].div(1000_000_000)\
.viz.bar(figsize=(10, 6),
title='VCI - Lợi nhuận trước thuế & lợi nhuận thuần (tỷ đồng)',
ylabel='Lợi nhuận (tỷ đồng)',
xlabel='Năm',
color_palette='stock',
data_labels=True, # Hiển thị giá trị trên cột
show_legend=True,
rot=45) # Xoay nhãn trục x 45 độ

Heatmap

import pandas as pd
return_pivot = pd.pivot_table(df, index=df.index.year, columns=df.index.month, values='returns', aggfunc='mean')
cmap = df.viz.create_cmap('percentage') # Tạo colormap bằng 1 bảng màu có trong vnstock_ezchart
return_pivot.viz.heatmap(figsize=(10, 6),
title='VN30F1M - Thống kê lợi nhuận trung bình theo ngày qua các tháng trong năm (%)',
annot=True,
cmap=cmap)

Table

Trong nhiều trường hợp, bạn cần trình bày dữ liệu chi tiết dứoi dạng bảng bằng để có thể tiện copy và chia sẻ hoặc chèn hình ảnh thương hiệu cá nhân, loại biểu diễn dữ liệu này dành cho bạn.

df.reset_index().iloc[:10, :5]\
.viz.table(figsize=(10, 10),
title='10 dòng đầu tiên của dữ liệu',
title_loc='center')

Biểu diễn phân phối

Histogram

df['returns'].viz.hist(bins=20,
figsize=(10, 6),
title='VN30F1M - Phân phối lợi nhuận ngày (%)',
xlabel='Lợi nhuận (%)',
ylabel='Tần suất',
color_palette='stock')

Boxplot

# Mở help cho biểu đồ boxplot để xem tất cả các tuỳ chọn
df.volume.div(1000_000)\
.viz.boxplot(
title='Phân phối khối lượng giao dịch của VN30F1M',
xlabel='',
ylabel='KLGD (Triệu CP)',
color_palette='stock',
palette_shuffle=True,
figsize=(10, 6))

Word Cloud

profile_df.viz.wordcloud(figsize=(10, 6), 
title='VCB - Mô tả công ty',
max_words=50,
color_palette='stock')

Biểu diễn tỉ lệ

Pie

shareholders_df.viz.pie(title='Cổ đông lớn VNM',
labels='share_holder',
values='share_own_percent',
figsize=(10, 6),
ylabel='',
color_palette='stock')

Treemap

shareholders_df.viz.treemap(title='Cổ đông lớn VNM',

labels='share_holder',

values='share_own_percent',

figsize=(10, 6),

color_palette='stock')

Biểu diễn tương quan

Scatter plot

df.viz.scatter(x='close', y='volume',
title='VN30F1M - Tương quan giá đóng cửa và khối lượng giao dịch',
xlabel='Giá đóng cửa',
ylabel='Khối lượng giao dịch',
figsize=(10, 6),
color_palette='stock')

Pairplot

df.viz.pairplot()