Matplotlib là thư viện vẽ đồ thị tuyệt vời dành cho python. Tuyệt vời như matplotlib, đôi khi nó có thể làm được điều đó với một chút cải tiến về phong cách [1] [2]. Gần đây tôi đã bắt gặp một tính năng thú vị trong matplotlib cho phép bạn vẽ đồ thị theo phong cách truyện tranh XKCD nổi tiếng, với phông chữ vui nhộn và kiểu đường nét 'sơ sài' hơn
Sử dụng các lô kiểu xkcd không chỉ để giải trí. Bạn có thể sử dụng kiểu xkcd khi muốn nhấn mạnh sự không chắc chắn trong mô hình hoặc phân tích của mình. Chúng trông không chính thức đến mức khán giả hoặc người đọc của bạn sẽ phải đặt câu hỏi liệu phân tích của bạn có đúng hay không
Các ô kiểu Matplotlib XKCDCác ô kiểu Matplotlib XKCD rất dễ tạo – nó đơn giản như bao gồm 'plt. xkcd[]' khi bắt đầu tập lệnh vẽ sơ đồ của bạn. Ví dụ
from matplotlib import pyplot as plt import numpy as np from scipy.stats import norm plt.xkcd[]: x_axis = np.arange[-10, 10, 0.001] mu = 0 variance = 1 plt.plot[x_axis, norm.pdf[x_axis,mu,variance]] plt.xlabel['X VALUES'] plt.ylabel['Y VALUES'] plt.title['NORMAL DISTRIBUTION'] plt.show[]
Cái nào nên xuất cái này
Bạn sẽ thấy rằng một khi bạn đã bao gồm plt. xkcd[] trong tập lệnh của bạn, tất cả các lô của bạn trong phiên đó sẽ có kiểu xkcd. Để kiểm soát nhiều hơn một chút đối với kiểu xkcd, bạn có thể sử dụng 'with plt. xkcd[]' thay vào đó. Ví dụ
from matplotlib import pyplot as plt import numpy as np from scipy.stats import norm # An xkcd-style plot with plt.xkcd[]: x_axis = np.arange[-10, 10, 0.001] mu = 0 variance = 1 plt.plot[x_axis, norm.pdf[x_axis,mu,variance]] plt.xlabel['X VALUES'] plt.ylabel['Y VALUES'] plt.title['NORMAL DISTRIBUTION'] plt.show[] # The same plot with matplotlib defaults x_axis = np.arange[-10, 10, 0.001] mu = 0 variance = 1 plt.plot[x_axis, norm.pdf[x_axis,mu,variance]] plt.xlabel['X VALUES'] plt.ylabel['Y VALUES'] plt.title['NORMAL DISTRIBUTION'] plt.show[]
Mã này sẽ tạo ra hai ô có cùng dữ liệu, nhưng với các kiểu khác nhau. Cái thứ hai sẽ sử dụng mặc định matplotlib và trông giống như thế này
Cải thiện văn bản
Để cải thiện giao diện [hoặc ít nhất là làm cho nó giống XKCD hơn], bạn có thể cài đặt phông chữ 'Humor Sans'. Sau khi bạn cài đặt phông chữ Humor Sans, bạn có thể thấy rằng matplotlib không thể tìm thấy nó ngay lập tức. Để giúp mọi thứ, bạn có thể đặt lại trình quản lý phông chữ matplotlib bằng
[Randall Munroe] chắc chắn hiểu sức mạnh của biểu diễn dữ liệu bằng đồ họa. Những tình tiết hài hước trong webcomic XKCD của anh là một trong những phần được nhiều độc giả yêu thích. Phong cách Tufteian đặc biệt của họ cung cấp thông tin – trong trường hợp này là một đường đột – mà không cần trang trí quá mức. Thành thật mà nói, chúng ta không thể có đủ chúng. Một chủ đề reddit gần đây đã nhắc nhở chúng tôi rằng bạn có thể tạo giao diện tương tự cho dữ liệu của riêng mình [hài hước hoặc cách khác] bằng Python bằng Matplotlib
Nếu bạn đã có một biểu đồ được tạo bằng Matplotlib, việc kích hoạt chế độ xkcd cũng đơn giản như gọi một phương thức trên đối tượng pyplot
matplotlib.pyplot.xkcd[]
Tài liệu khuyên bạn nên cài đặt phông chữ “Humor Sans” để có hiệu quả tốt nhất. Trên một trong các hộp linux của chúng tôi, chúng tôi có thể thực hiện việc này một cách dễ dàng
sudo apt-get install fonts-humor-sans
Chắc chắn sẽ có những câu thần chú tương tự cho các hệ điều hành khác. Nó thực sự đơn giản. Trên thực tế, hình ảnh nổi bật ở trên được tạo bằng tập lệnh tối thiểu này
#!/usr/bin/env python3 import numpy as np import matplotlib.pyplot as plt x = np.linspace[0, 1, 100] y = [x > 0.5] * [x - 0.5] plt.xkcd[scale=5, length=400] plt.xticks[[]] plt.yticks[[]] plt.ylabel['Downloads of "humor sans" font'] plt.text[0, 0.25, 'Article on xkcd[] published'] plt.plot[x, y] plt.plot[[0.3, 0.475], [0.2, 0.025], 'black'] plt.gca[].set_aspect[2*9/16] plt.savefig['xkcd_plot.png', dpi=300]
Ngoài việc tạo ra các biểu đồ hài hước cho những người có chút năng khiếu nghệ thuật, những biểu đồ này cũng có thể được sử dụng thay cho các bản phác thảo vẽ tay để biểu thị một mô hình đơn giản hoặc kết quả mong đợi. Giao diện hài hước của các ô truyền tải ý tưởng rằng chúng không đại diện cho dữ liệu thực tế, có lẽ chỉ là một khái niệm. Chúng tôi đã thấy điều này được thực hiện tại một trong những cuộc nói chuyện tại Hackaday SuperConference 2018
Chúng tôi cũng đã đề cập đến một số truyện tranh xkcd trước đây, chẳng hạn như khi họ mổ xẻ Arduino một cách tinh vi vào năm 2010, trước đó điều đó thật tuyệt