messenger_logo
Liên hệ qua Messenger
SciEco

Sử dụng D3po cùng Tabler để tạo biểu đồ tương tác trong R

I
IEFPA
Ngày viết: 23/09/2026

Trong bối cảnh các tổ chức chính phủ và tổ chức phi lợi nhuận ngày càng cần công cụ trực quan hóa dữ liệu minh bạch, mở và bền vững, việc lựa chọn công cụ phù hợp không chỉ ảnh hưởng đến chất lượng báo cáo mà còn quyết định tính khả thi trong dài hạn. D3po và Tabler – hai dự án mã nguồn mở được phát triển bởi pacha.dev – chính là giải pháp lý tưởng cho những ai cần biểu đồ tương tác mà không lo rủi ro pháp lý từ giấy phép GPL.

D3po là một gói R thay thế miễn phí cho Highcharter, với thiết kế hướng đến sự đơn giản và hiệu suất cao. Thay vì bao gồm hàng trăm tùy chọn phức tạp, D3po tập trung vào các tính năng cốt lõi: biểu đồ dạng cây (treemap), biểu đồ đường, biểu đồ cột – tất cả đều được xây dựng trên nền tảng JavaScript mạnh mẽ nhưng không yêu cầu giấy phép trả phí cho mục đích tổ chức. Điều này đặc biệt quan trọng khi các cơ quan nhà nước hoặc NGO phải tuân thủ nghiêm ngặt về nguồn gốc phần mềm.

Một trong những câu hỏi thường gặp sau khi giới thiệu D3po là: Liệu có thể tạo biểu đồ treemap lồng ghép (nested treemap) không? Câu trả lời là có. Trong gói demo được cung cấp, người dùng có thể khám phá cách xây dựng cấu trúc phân cấp rõ ràng, từ cấp quốc gia đến tỉnh thành, thể hiện dữ liệu phân bổ ngân sách hoặc dân số theo từng tầng. Sự linh hoạt này giúp người dùng truyền tải thông tin phức tạp một cách trực quan mà không cần đến các công cụ thương mại đắt đỏ.

Để bắt đầu, bạn cần cài đặt hai gói từ R-Universe của tác giả:

1install.packages("d3po", repos = "https://pachadotdev.r-universe.dev")
2install.packages("tabler", repos = "https://pachadotdev.r-universe.dev")

Sau đó, cài đặt ứng dụng demo từ GitHub:

1if (!require("remotes")) { 
2  install.packages("remotes", repos = "https://cloud.r-project.org") 
3}
4remotes::install_github("pachadotdev/d3po", subdir = "examples/d3podemo")
5d3podemo::run_app()

Khi chạy lệnh run_app(), một giao diện web tương tác sẽ mở ra, cho phép bạn thay đổi màu nền, màu tooltip, chỉnh sửa nội dung nhãn và tùy chỉnh các hiệu ứng hiển thị – tất cả đều được thực hiện hoàn toàn trong môi trường R, không cần viết JavaScript.

Một điểm nổi bật của D3po là khả năng tích hợp liền mạch với Tabler – một hệ thống giao diện người dùng (UI) dựa trên CSS hiện đại, thân thiện với thiết bị di động và phù hợp với các tiêu chuẩn thiết kế chính phủ. Nhờ đó, người dùng có thể tạo ra các báo cáo trực quan không chỉ đẹp mắt mà còn chuyên nghiệp, dễ chia sẻ và tích hợp vào hệ thống nội bộ.

Các tùy chọn như thay đổi màu sắc tooltip hay kiểu dáng nhãn được xử lý thông qua một hệ thống cấu hình đơn giản, dễ đọc, giúp bạn tập trung vào nội dung thay vì cú pháp phức tạp:

1d3po::d3treemap(data, 
2                value = "budget", 
3                label = "region", 
4                palette = "Blues", 
5                tooltip = list(
6                  background = "#2c3e50", 
7                  text_color = "#ecf0f1"
8                ))

✨ Giá trị đắt giá: D3po không chỉ là một công cụ thay thế – nó là minh chứng cho triết lý phát triển phần mềm mở vì lợi ích cộng đồng. Với giấy phép Apache 2.0, bạn có thể sử dụng, tùy biến và phân phối mà không bị ràng buộc bởi các điều kiện “lây nhiễm” như GPL. Điều đó giúp các tổ chức công lập yên tâm về tính pháp lý trong suốt vòng đời dự án, từ phát triển đến triển khai rộng rãi.

Câu hỏi tư duy: Giả sử bạn đang xây dựng một báo cáo theo dõi phân bổ ngân sách cho 50 tỉnh thành, trong đó mỗi tỉnh có 3 cấp: vùng, huyện, xã. Làm thế nào để thiết kế một biểu đồ treemap lồng ghép trong D3po sao cho người dùng có thể nhấp vào từng khối để xem chi tiết theo cấp độ? Hãy nêu kế hoạch triển khai và mô tả các tham số cần thiết trong hàm d3treemap().


Bài viết khác
Trong hành trình phát triển các lệnh ước lượng chuyên sâu trong Stata, việc tích hợp mã nguồn từ ngôn ngữ khác như C, C++ hay Java mở ra một thế giới mới về hiệu suất và khả năng tùy biến. Một trong những kỹ thuật mạnh mẽ nhất là viết plugin — hay còn gọi là thư viện liên kết động (DLL) — để tận dụng sức mạnh của C trong môi trường Stata. Bài viết này là phần thứ hai trong chuỗi chuyên đề “Viết một lệnh ước lượng trong Stata”, tiếp nối bài trước về việc chuẩn bị viết plugin. Ở đây, chúng ta sẽ xây dựng một plugin C thực hiện chính xác các phép tính mà hàm mymean_work() trong tệp mymean11.ado đã làm. Mục tiêu không chỉ là minh họa cách giao tiếp giữa C và Stata, mà còn cung cấp một nền tảng vững chắc cho các tính toán hiệu suất cao trong các mô hình kinh tế lượng phức tạp. Viết một plugin C đơn giản: “Hello, C!” Trước khi tiến vào tính toán thực tế, hãy bắt đầu bằng một ví dụ đơn giản: một plugin C hiển thị thông điệp “Hello from C” trong cửa sổ Stata. Mã nguồn cho myhello.ado được trình bày như sau:
Trong bài viết trước, chúng ta đã xây dựng một đường ống phân tích văn bản sử dụng quanteda. Quy trình đó tạo ra ma trận đặc trưng văn bản (DFM), áp dụng trọng số TF-IDF và đo lường sự tương đồng qua cosine similarity. Tuy nhiên, phương pháp này bộc lộ một hạn chế căn bản: cosine similarity tính trên các vector TF-IDF thưa chỉ phản ánh sự trùng lặp từ vựng, chứ không nắm bắt được ý nghĩa ngữ nghĩa. Xét ví dụ hai câu: "Người vay nợ không thực hiện nghĩa vụ trả nợ" và "Khách hàng không đáp ứng được cam kết trả nợ". Sau khi loại từ dừng, chúng không chia sẻ từ vựng nào, dẫn đến độ tương đồng TF-IDF gần như bằng 0. Dù vậy, bất kỳ аналитик nào cũng nhận ra chúng mang ý nghĩa như nhau. Giải pháp nằm ở vector nhúng dày đặc (dense embeddings) — biểu diễn thần kinh nơi các văn bản mang ý nghĩa gần nhau được ánh xạ đến các vị trí lân cận trong không gian vectơ. Nhờ đó, chúng ta có thể đo lường sự tương đồng ngữ nghĩa ngay cả khi không có từ chung. Bài viết này sẽ hướng dẫn xây dựng một đường ống Tạo sinh tăng cường truy xuất (RAG) trong R, sử dụng ragnar cho kho truy xuất và ellmer cho tương tác mô hình ngôn ngữ lớn (LLM), minh họa sức mạnh của nhúng dày đặc trong truy xuất và sinh câu trả lời. Toàn bộ quy trình chạy cục bộ nhờ Ollama.
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: [email protected]
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội