Có thể bạn quan tâm: Cách Vẽ Hình Trong Geogebra: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
TÓM TẮT
- 1 1. Giới thiệu chung về việc vẽ hình trong LaTeX
- 2 2. Các gói vẽ hình phổ biến trong LaTeX
- 3 3. Cài đặt môi trường LaTeX để vẽ hình
- 4 4. Cú pháp cơ bản của TikZ
- 5 5. Vẽ biểu đồ với PGFPlots
- 6 6. Asymptote: Vẽ đồ họa 3D và toán học chuyên sâu
- 7 7. PSTricks: Vẽ sơ đồ kỹ thuật và mạch điện
- 8 8. Thực hành: Các ví dụ thực tế
- 9 9. Tối ưu hoá chất lượng hình ảnh
- 10 10. Lời khuyên và mẹo nâng cao
- 11 11. Tổng kết
1. Giới thiệu chung về việc vẽ hình trong LaTeX
LaTeX không chỉ là công cụ mạnh mẽ để soạn thảo các tài liệu khoa học, kỹ thuật mà còn hỗ trợ người dùng tạo ra các đồ họa, biểu đồ, hình vẽ một cách chuyên nghiệp. Nhờ các gói (package) mở rộng như TikZ, PGFPlots, Asymptote, pstricks, người dùng có thể vẽ được mọi loại hình ảnh từ những đường thẳng đơn giản, hình học cơ bản, cho tới các biểu đồ phức tạp, đồ thị hàm số 3‑chiều, hay các sơ đồ mạch điện.
Bài viết này sẽ cung cấp một hướng dẫn chi tiết, từng bước một, giúp người mới bắt đầu và cả người đã có kinh nghiệm có thể:
- Hiểu được các gói vẽ hình phổ biến trong LaTeX.
- Cài đặt và cấu hình môi trường LaTeX để vẽ hình.
- Thực hiện các ví dụ thực tế: vẽ hình học cơ bản, biểu đồ hàm số, đồ thị mạng, sơ đồ khối, và các biểu đồ thống kê.
- Tối ưu hoá chất lượng hình ảnh cho việc xuất bản (PDF, PNG, SVG…).
Với nội dung dài hơn 1500 chữ, bài viết sẽ không chỉ liệt kê cú pháp mà còn giải thích lý do tại sao một số lệnh lại hoạt động như vậy, giúp người đọc nắm vững nguyên tắc và tự tin sáng tạo các hình ảnh tùy chỉnh.
Có thể bạn quan tâm: Cách Vẽ Hình Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Các gói vẽ hình phổ biến trong LaTeX
2.1 TikZ & PGF
- TikZ (TikZ ist kein Zeichenprogramm) là một ngôn ngữ lập trình đồ họa dựa trên PGF (Portable Graphics Format). Đây là gói được sử dụng rộng rãi nhất vì tính linh hoạt, khả năng tích hợp sâu với LaTeX và tài liệu phong phú.
- Đặc điểm:
- Cho phép vẽ vector (độ phân giải vô hạn) trực tiếp trong tài liệu .tex.
- Hỗ trợ các phép toán hình học, vòng lặp, điều kiện, và thậm chí lập trình hàm.
- Có thể xuất ra các định dạng PDF, PNG, SVG thông qua
pdflatex,lualatex,xelatex.
2.2 PGFPlots
- Dựa trên TikZ, PGFPlots tập trung vào việc vẽ biểu đồ, đồ thị hàm số và dữ liệu.
- Thích hợp cho các nhà khoa học, kỹ sư muốn hiển thị dữ liệu thô, biểu đồ hàm số, biểu đồ thống kê.
- Hỗ trợ 2D và 3D, tự động tạo trục, nhãn, chú giải, và có thể nhập dữ liệu từ file
.csv.
2.3 Asymptote
- Ngôn ngữ vẽ đồ họa riêng, được thiết kế để tạo ra các hình ảnh chất lượng cao, đặc biệt là trong môi trường 3D.
- Có khả năng tính toán số học, giải phương trình, và tích hợp tốt với LaTeX.
- Thích hợp khi cần vẽ các mô hình hình học phức tạp, hình học đại số, hoặc đồ thị 3D.
2.4 PSTricks
- Dựa trên PostScript, PSTricks đã tồn tại lâu đời và rất mạnh trong việc vẽ các hình học, mạch điện, và các sơ đồ kỹ thuật.
- Tuy nhiên, PSTricks yêu cầu biên dịch qua
latex -> dvips -> ps2pdfhoặc sử dụngxelatex/lualatexvới tùy chọn--shell-escape. Điều này khiến nó ít tiện lợi hơn TikZ trong môi trường PDFLaTeX.
2.5 Các gói hỗ trợ khác
- graphicx: Để chèn hình ảnh raster hoặc vector đã có (PNG, JPG, PDF, EPS…).
- svg: Nhập trực tiếp file SVG.
- tikz-3dplot, tikz-cd, circuitikz: Các gói mở rộng cho TikZ, phục vụ các nhu cầu chuyên biệt (đồ thị 3D, sơ đồ commutative, mạch điện).
Có thể bạn quan tâm: Cách Vẽ Hình Trong Coreldraw: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
3. Cài đặt môi trường LaTeX để vẽ hình
3.1 Cài đặt TeX distribution
- TeX Live (Linux, macOS, Windows) hoặc MiKTeX (Windows) đều cung cấp đầy đủ các gói trên. Để cài đặt nhanh:
# Trên Ubuntu/Debian
sudo apt-get install texlive-full
# Hoặc chỉ cài các gói cần thiết
sudo apt-get install texlive-latex-extra texlive-pictures
- Kiểm tra cài đặt:
latex -v
pdflatex -v
3.2 Cài đặt các gói bổ sung (nếu chưa có)
Nếu tài liệu báo lỗi “Package not found”, chạy:
tlmgr install tikz pgfplots asymptote pst-pdf
hoặc sử dụng MiKTeX Console để cài đặt qua giao diện.
3.3 Chọn trình biên dịch
- pdflatex: Tiêu chuẩn, nhanh, tạo PDF trực tiếp.
- lualatex hoặc xelatex: Hỗ trợ Unicode, font OpenType, và có thể dùng
--shell-escapeđể chạy Asymptote. - latex → dvips → ps2pdf: Cần thiết cho PSTricks.
4. Cú pháp cơ bản của TikZ
4.1 Khởi tạo môi trường
\documentclass{article}
\usepackage{tikz}
\begin{document} \begin{tikzpicture} % Code vẽ ở đây
\end{tikzpicture} \end{document}
tikzpicturelà môi trường chứa toàn bộ lệnh vẽ.- Các lệnh vẽ thường có dạng
\drawoptions (coordinates) -- (coordinates);.
4.2 Định nghĩa tọa độ
- Tọa độ có thể là các điểm dạng
(x,y)(2D) hoặc(x,y,z)(3D vớitikz-3dplot). - Các điểm tạm thời (named coordinates) giúp tái sử dụng:
\coordinate (A) at (0,0);
\coordinate (B) at (3,2);
\draw (A) -- (B);
4.3 Các tùy chọn vẽ (draw options)
| Tùy chọn | Mô tả |
|---|---|
color=red hoặc red |
Màu sắc đường viền hoặc nét vẽ |
fill=blue!20 |
Màu nền (đổ màu) với độ trong suốt |
thick, very thick, ultra thick |
Độ dày của nét |
dashed, dotted |
Kiểu đường nét |
->, <-, <-> |
Đầu mũi tên |
rotate=45 |
Xoay toàn bộ đối tượng |
4.4 Vẽ các hình cơ bản
4.4.1 Đường thẳng và mũi tên
\draw->, thick, blue (0,0) -- (4,0);
4.4.2 Hình chữ nhật và hình vuông
\drawfill=yellow!30 (0,0) rectangle (3,2);
% Hoặc dùng \node để vẽ hình vuông
\nodedraw, minimum size=2cm at (5,1) {};
4.4.3 Hình tròn, elip, và cung
\draw (2,2) circle (1.5); % Bán kính 1.5
\draw (5,2) ellipse (2 and 1); % Elip, trục x=2, trục y=1
\draw (8,2) arc (0:180:1.5); % Cung 180 độ
4.4.4 Đa giác (polygon)
\drawfill=green!20 (0,0) -- (2,0) -- (2.5,1.5) -- (1,2.5) -- cycle;
4.5 Nhóm (scope) và biến đổi
Khi muốn áp dụng cùng một kiểu cho nhiều đối tượng, dùng scope:
\begin{scope}blue, thick \draw (0,0) -- (1,1); \draw (1,0) -- (0,1);
\end{scope}
Biến đổi toàn bộ nhóm:
\begin{scope}shift={(3,0)}, rotate=30 \draw (0,0) rectangle (2,1);
\end{scope}
4.6 Vẽ hàm số trong TikZ
TikZ hỗ trợ hàm toán học cơ bản:
\drawdomain=-2:2, smooth, variable=\x, red plot ({\x}, {sin(\x r)});
\x rchuyển độ sang radian (đối với hàm sin, cos).smoothlàm cho đường cong mượt hơn.
5. Vẽ biểu đồ với PGFPlots
5.1 Khởi tạo môi trường
\usepackage{pgfplots}
\pgfplotsset{compat=1.18} % Đảm bảo tính tương thích
Sau đó:
\begin{tikzpicture}
\begin{axis} title={Biểu đồ hàm số}, xlabel={$x$}, ylabel={$f(x)$}, grid=both, legend style={at={(0.5,-0.15)},anchor=north}, % Các plot ở đây
\end{axis}
\end{tikzpicture}
5.2 Plot hàm số đơn
\addplot domain=-3:3, samples=200, color=blue, { x^2 };
\addlegendentry{$y=x^2$}
5.3 Vẽ dữ liệu từ file
Giả sử có file data.txt:
0 0
1 1.2
2 2.8
3 6.1
Trong LaTeX:
\addplot color=red, mark=, thick, table {data.txt};
\addlegendentry{Dữ liệu thực nghiệm}
5.4 Biểu đồ 3D

Có thể bạn quan tâm: Cách Vẽ Hình Trong Illustrator: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
\begin{axis} view={60}{30}, colormap/viridis, xlabel={$x$}, ylabel={$y$}, zlabel={$z$}, \addplot3 surf, domain=-2:2, samples=30, { sin(deg(x))cos(deg(y)) };
\end{axis}
5.5 Tùy chỉnh trục và nhãn
- Logarithmic axis:
\begin{semilogxaxis}title={Log‑scale X} \addplot coordinates {(1,2) (10,5) (100,12)};
\end{semilogxaxis}
- Tick labels:
xtick={-2,-1,0,1,2},
xticklabels={-2,$-1$,0,$1$,2},
6. Asymptote: Vẽ đồ họa 3D và toán học chuyên sâu
6.1 Cài đặt và tích hợp
- Đối với TeX Live, Asymptote đã được bao gồm. Đảm bảo biên dịch với
-shell-escape:
pdflatex -shell-escape myfile.tex
6.2 Cú pháp cơ bản
\begin{asy}
size(200);
draw((0,0)--(5,0), Arrow);
draw((0,0)--(0,5), Arrow);
label("$x$", (5,0), E);
label("$y$", (0,5), N);
draw(circle((2,2),1), red+linewidth(1));
\end{asy}
size(200)xác định kích thước pixel.drawvẽ các đoạn thẳng, vòng tròn, đa giác.labelđặt nhãn.
6.3 Vẽ mặt phẳng và hàm 3D
\begin{asy}
import three;
size(250);
currentprojection = orthographic(2,1,1);
draw(surface((x,y)->(x,y,x^2+y^2)), gray(0.7));
draw((0,0,0)--(2,0,0), Arrow3);
draw((0,0,0)--(0,2,0), Arrow3);
draw((0,0,0)--(0,0,2), Arrow3);
\end{asy}
import three;bật module 3D.surfacetạo lưới hàm số.
6.4 Tích hợp dữ liệu CSV
import graph;
real xs = {0,1,2,3,4};
real ys = {0,1.2,2.5,3.8,5.1};
draw(graph(xs,ys), red+linewidth(1));
7. PSTricks: Vẽ sơ đồ kỹ thuật và mạch điện
7.1 Cài đặt và biên dịch
latex myfile.tex
dvips myfile.dvi
ps2pdf myfile.ps
Hoặc dùng xelatex -shell-escape để biên dịch trực tiếp sang PDF.
7.2 Ví dụ vẽ mạch điện với circuitikz
\usepackage{circuitikz}
...
\begin{circuitikz}
\draw (0,0) toR, l=$R_1$ (2,0) -- (2,2) toC, l=$C_1$ (0,2) -- (0,0);
\end{circuitikz}
7.3 Sơ đồ khối (block diagram)
\begin{pspicture}(0,-2)(10,2)
\psframe(0,0)(2,1)
\rput(1,0.5){Input}
\psline{->}(2,0.5)(4,0.5)
\psframe(4,0)(6,1)
\rput(5,0.5){Processor}
\psline{->}(6,0.5)(8,0.5)
\psframe(8,0)(10,1)
\rput(9,0.5){Output}
\end{pspicture}
8. Thực hành: Các ví dụ thực tế
8.1 Vẽ hình tam giác đều và tính góc
\begin{tikzpicture}scale=1.2
\coordinate (A) at (0,0);
\coordinate (B) at (4,0);
\coordinate (C) at (2, {2sqrt(3)});
\drawthick (A) -- (B) -- (C) -- cycle;
\foreach \p/\pos in {A/below left, B/below right, C/above} \node\pos at (\p) {$\p$}; % Góc tại A
\draw pic"$\alpha$", draw=orange, <->, angle radius=1cm {angle=C--A--B};
\end{tikzpicture}
Kết quả là một tam giác đều với góc $\alpha = 60^\circ$ được đánh dấu.
8.2 Biểu đồ hàm số sin và cos trên cùng một trục
\begin{tikzpicture}
\begin{axis} width=10cm, height=6cm, xlabel={$x$ (rad)}, ylabel={$y$}, legend pos=north east, grid=both, \addplotdomain=0:2pi, samples=200, blue {sin(deg(x))};
\addlegendentry{$\sin x$}
\addplotdomain=0:2pi, samples=200, red, dashed {cos(deg(x))};
\addlegendentry{$\cos x$}
\end{axis}
\end{tikzpicture}
8.3 Đồ thị mạng (graph) với TikZ
\begin{tikzpicture}node distance=2cm, every node/.style={circle,draw,fill=blue!20,minimum size=1cm}
\node (A) {A};
\node (B) right of=A {B};
\node (C) below of=A {C};
\node (D) right of=C {D}; \draw->, thick (A) -- (B);
\draw->, thick (A) -- (C);
\draw->, thick (B) -- (D);
\draw->, thick (C) -- (D);
\draw->, thick, bend left (B) to nodeabove {loop} (A);
\end{tikzpicture}
8.4 Sơ đồ khối xử lý tín hiệu
\begin{tikzpicture}node distance=2cm, block/.style={rectangle,draw,fill=gray!20,minimum height=1.2cm,minimum width=2cm}
\nodeblock (input) {Input};
\nodeblock, right of=input (filter) {Filter};
\nodeblock, right of=filter (amplify) {Amplifier};
\nodeblock, right of=amplify (output) {Output}; \draw-> (input) -- (filter);
\draw-> (filter) -- (amplify);
\draw-> (amplify) -- (output);
\end{tikzpicture}
8.5 Đồ thị 3D hàm $z = \sin(x) \cos(y)$ bằng PGFPlots
\begin{tikzpicture}
\begin{axis} view={60}{30}, colormap/jet, xlabel={$x$}, ylabel={$y$}, zlabel={$z$}, mesh/rows=30, mesh/cols=30, \addplot3 surf, domain=-pi:pi, y domain=-pi:pi, {sin(deg(x))cos(deg(y))};
\end{axis}
\end{tikzpicture}
9. Tối ưu hoá chất lượng hình ảnh
9.1 Độ phân giải và kích thước
- Vì TikZ và PGFPlots tạo vector, chúng không mất chất lượng khi phóng to. Tuy nhiên, khi xuất ra ảnh raster (PNG), cần chỉ định
\pdfpxdimen=1pthoặc dùng\usepackage{graphicx}với tùy chọn\includegraphicswidth=...{file}. - Đối với Asymptote, có thể đặt
size(400);để tăng độ phân giải.
9.2 Định dạng xuất
| Định dạng | Khi nào dùng |
|---|---|
| Cho tài liệu khoa học, in ấn, mọi nền tảng. | |
| SVG | Khi cần nhúng vào web, bảo toàn vector. Dùng svg package. |
| PNG | Khi cần raster (ví dụ slide PowerPoint). Dùng \includegraphics sau khi chuyển PDF → PNG (công cụ convert). |
| EPS | Đối với các hệ thống chỉ hỗ trợ PostScript (cũ). |
9.3 Thu gọn mã nguồn
- Sử dụng
\input{file.tex}để tách các phần vẽ phức tạp ra file riêng, giúp tài liệu gọn gàng. - Định nghĩa macro cho các hình mẫu lặp lại:
\newcommand{\mybox}2{ \drawfill=#1!20 (0,0) rectangle (2,1); \node at (1,0.5) {#2};
}
Sau đó dùng \mybox{red}{Sample}.
10. Lời khuyên và mẹo nâng cao
- Sử dụng
\tikzset{}để định nghĩa các style toàn cục, tránh lặp lại.
latex \tikzset{ myarrow/.style={->, thick, >=stealth}, mynode/.style={circle, draw, fill=green!30, inner sep=2pt} } - Kiểm tra nhanh: Khi viết TikZ, sử dụng trình biên dịch nhanh
latexmk -pdf -pvc file.texđể tự động biên dịch mỗi khi lưu thay đổi. - Tận dụng vòng lặp:
\foreach \i in {1,...,5}{ ... }giúp tạo lưới, mạng lưới, hoặc các phần tử lặp. - Tích hợp với Python/Matlab: Xuất dữ liệu ra CSV rồi dùng
pgfplotsđể vẽ, hoặc dùngmatplotlib2tikzđể chuyển đồ thị Python sang TikZ. - Debug: Khi gặp lỗi “Undefined control sequence”, kiểm tra xem gói cần thiết đã
\usepackage{}chưa, và chắc chắn biên dịch với-shell-escapenếu dùng Asymptote hoặc externalization. - Externalization: Đối với tài liệu lớn, dùng
\usepackage{tikzexternalize}để biên dịch các hình một lần và lưu dưới dạng PDF riêng, giảm thời gian biên dịch tổng thể.
11. Tổng kết
Việc vẽ hình trong LaTeX không còn là một thách thức khó khăn nếu bạn nắm vững các gói chính như TikZ, PGFPlots, Asymptote, và PSTricks. Bằng cách:
- Cài đặt môi trường đầy đủ,
- Hiểu cú pháp cơ bản và các tùy chọn mạnh mẽ,
- Thực hành qua các ví dụ thực tế,
- Tối ưu hoá chất lượng và tốc độ biên dịch,
bạn sẽ tạo ra những hình ảnh chất lượng cao, đồng nhất với phong cách của tài liệu LaTeX, phù hợp cho các bài báo khoa học, luận văn, slide thuyết trình, hay sách giáo trình.
Hãy bắt đầu thử nghiệm ngay hôm nay: mở một file .tex, thêm \usepackage{tikz, pgfplots} và vẽ một đồ thị đơn giản. Khi đã quen, bạn sẽ khám phá được sức mạnh vô hạn của LaTeX trong việc truyền tải thông tin trực quan một cách chuyên nghiệp. Chúc bạn thành công!
