Tự Học Data Science · 06/03/2024 0

04.11 Customizing Matplotlib – Configurations and Stylesheets

Tùy chỉnh Bảng đồ bằng tay

Qua chương này, chúng ta đã thấy làm thế nào để điều chỉnh các thiết lập đồ thị cá nhân để có được một cái nhìn đẹp hơn một chút so với mặc định.Có thể thực hiện các tùy chỉnh này cho mỗi đồ thị riêng lẻ.Ví dụ, đây là một biểu đồ tổng quan khá tẻ nhạt mặc định:

import matplotlib.pyplot as pltplt.style.use('classic')import numpy as np%matplotlib inline
x = np.random.randn(1000)plt.hist(x);
ảnh ví dụ - data science lại blog của lưu

Chúng ta có thể điều chỉnh điều này bằng tay để biến nó thành một biểu đồ đẹp hơn thị giác:

# use a gray backgroundax = plt.axes(axisbg='#E6E6E6')ax.set_axisbelow(True)# draw solid white grid linesplt.grid(color='w', linestyle='solid')# hide axis spinesfor spine in ax.spines.values():    spine.set_visible(False)    # hide top and right ticksax.xaxis.tick_bottom()ax.yaxis.tick_left()# lighten ticks and labelsax.tick_params(colors='gray', direction='out')for tick in ax.get_xticklabels():    tick.set_color('gray')for tick in ax.get_yticklabels():    tick.set_color('gray')    # control face and edge color of histogramax.hist(x, edgecolor='#E6E6E6', color='#EE6666');
ảnh ví dụ - data science lại blog của lưu

Điều này trông tốt hơn, và bạn có thể nhận ra mẫu này đã được lấy cảm hứng từ gói trực quan hóa ggplot của ngôn ngữ R.Nhưng điều này mất rất nhiều công sức!Chúng ta chắc chắn không muốn phải điều chỉnh tất cả những thứ đó mỗi khi tạo biểu đồ.May mắn thay, có một cách để điều chỉnh các giá trị mặc định này một lần cho tất cả các biểu đồ.

Thay đổi Mặc định: rcParams

Mỗi khi Matplotlib được tải, nó sẽ định nghĩa một cấu hình thời gian chạy (rc) chứa các kiểu mặc định cho mọi phần tử đồ thị bạn tạo.Cấu hình này có thể được điều chỉnh bất kỳ lúc nào bằng cách sử dụng công cụ tiện ích plt.rc.Hãy xem cái này trông như thế nào khi chỉnh sửa các thông số rc để đồ thị mặc định của chúng ta trông giống như đã làm trước đó.

Đầu tiên, chúng ta sẽ lưu một bản sao của từ điển rcParams hiện tại, để có thể dễ dàng đặt lại những thay đổi này trong phiên làm việc hiện tại:

IPython_default = plt.rcParams.copy()

Bây giờ chúng ta có thể sử dụng hàm plt.rc để thay đổi một vài cài đặt này:

from matplotlib import cyclercolors = cycler('color',                ['#EE6666', '#3388BB', '#9988DD',                 '#EECC55', '#88BB44', '#FFBBBB'])plt.rc('axes', facecolor='#E6E6E6', edgecolor='none',       axisbelow=True, grid=True, prop_cycle=colors)plt.rc('grid', color='w', linestyle='solid')plt.rc('xtick', direction='out', color='gray')plt.rc('ytick', direction='out', color='gray')plt.rc('patch', edgecolor='#E6E6E6')plt.rc('lines', linewidth=2)

Với những cài đặt này được định nghĩa, chúng ta có thể tạo một đồ thị và xem cài đặt của chúng ta trong hoạt động:

plt.hist(x);
ảnh ví dụ - data science lại blog của lưu

Hãy xem như thế nào là đồ thị đường đơn giản với những tham số rc này:

for i in range(4):    plt.plot(np.random.rand(10))
ảnh ví dụ - data science lại blog của lưu

Tôi thấy điều này đẹp mắt hơn so với phong cách mặc định.Nếu bạn không đồng ý với cái nhìn thẩm mỹ của tôi, tin mừng là bạn có thể điều chỉnh các thông số rc để phù hợp với sở thích riêng của bạn!Các cài đặt này có thể được lưu trong tệp .matplotlibrc, bạn có thể đọc về nó trong tài liệu Matplotlib.Dù vậy, tôi thích tùy chỉnh Matplotlib bằng cách sử dụng các bộ kiểu của nó thay vì vậy.

Bảng điều khiển kiểu dáng

Phiên bản 1.4 được phát hành của Matplotlib vào tháng 8 năm 2014 đã thêm một module rất tiện lợi gọi là style, bao gồm nhiều bộ stylesheet mặc định mới, cũng như khả năng tạo và đóng gói các bộ stylesheet riêng của bạn. Những bộ stylesheet này được định dạng tương tự như các file .matplotlibrc được đề cập trước đó, nhưng phải có phần mở rộng là .mplstyle.

Dù bạn không tạo ra kiểu riêng của mình, các bảng phong cách được bao gồm theo mặc định rất hữu ích.Các kiểu dáng có sẵn được liệt kê trong plt.style.available—ở đây tôi chỉ liệt kê năm kiểu đầu tiên cho sự ngắn gọn:

plt.style.available[:5]
['fivethirtyeight', 'seaborn-pastel', 'seaborn-whitegrid', 'ggplot', 'grayscale']

Cách cơ bản để chuyển sang một bảng điều khiển phong cách là gọi

plt.style.use('stylename')

Nhưng hãy nhớ rằng điều này sẽ thay đổi kiểu cho phần còn lại của phiên làm việc!Hoặc bạn có thể sử dụng quản lý ngữ cảnh kiểu dáng, nó sẽ thiết lập một kiểu tạm thời:

with plt.style.context('stylename'):    make_a_plot()

Hãy tạo một hàm mà sẽ tạo ra hai loại biểu đồ cơ bản:

def hist_and_lines():    np.random.seed(0)    fig, ax = plt.subplots(1, 2, figsize=(11, 4))    ax[0].hist(np.random.randn(1000))    for i in range(3):        ax[1].plot(np.random.rand(10))    ax[1].legend(['a', 'b', 'c'], loc='lower left')

Chúng ta sẽ sử dụng điều này để khám phá cách các đồ thị này trông như thế nào bằng cách sử dụng các kiểu được tích hợp sẵn khác nhau.

Phong cách mặc định

Phong cách mặc định là những gì chúng ta đã thấy cho đến nay trong sách; chúng ta sẽ bắt đầu bằng việc đặt lại cấu hình chạy thời gian mặc định của chúng tôi đến mặc định của notebook:

# reset rcParamsplt.rcParams.update(IPython_default);

Bây giờ hãy xem nó trông như thế nào:

hist_and_lines()
ảnh ví dụ - data science lại blog của lưu

Phong cách FiveThiryEight

Phong cách fivethirtyeight mô phỏng các đồ hoạ được tìm thấy trên trang web phổ biến FiveThirtyEight.Như bạn có thể thấy ở đây, nó được miêu tả bằng các màu sắc đậm, đường viền dày và trục trong suốt:

with plt.style.context('fivethirtyeight'):    hist_and_lines()
ảnh ví dụ - data science lại blog của lưu

ggplot

Gói ggplot trong ngôn ngữ R là một công cụ hiển thị rất phổ biến.Kiểu ggplot của Matplotlib sao chép các kiểu mặc định từ gói đó:

with plt.style.context('ggplot'):    hist_and_lines()
ảnh ví dụ - data science lại blog của lưu

*Phương pháp bayes cho người tấn công( phong cách

Có một quyển sách trực tuyến rất hay có tên là Probabilistic Programming and Bayesian Methods for Hackers; nó sử dụng hình ảnh được tạo ra bằng Matplotlib và sử dụng một tập hợp các tham số rc để tạo ra một kiểu dáng nhất quán và hấp dẫn mắt trong suốt quyển sách.Kiểu dáng này được tái tạo trong stylesheet bmh:

with plt.style.context('bmh'):    hist_and_lines()
ảnh ví dụ - data science lại blog của lưu

Nền tối

Đối với các hình ảnh được sử dụng trong các bài thuyết trình, thì việc có nền tối hơn là nền sáng thường rất hữu ích.Kiểu dark_background cung cấp điều này:

with plt.style.context('dark_background'):    hist_and_lines()
ảnh ví dụ - data science lại blog của lưu

Chuyển hình ảnh sang tông màu xám

Đôi khi bạn có thể thấy mình đang chuẩn bị các hình vẽ cho một xuất bản phẩm in ấn không chấp nhận hình ảnh màu.Đối với việc này, kiểu grayscale, được hiển thị ở đây, có thể rất hữu ích:

with plt.style.context('grayscale'):    hist_and_lines()
ảnh ví dụ - data science lại blog của lưu

Kiểu Seaborn

Matplotlib cũng có bộ style được lấy cảm hứng từ thư viện Seaborn (được thảo luận chi tiết hơn trong Visualization With Seaborn).Như chúng ta sẽ thấy, những style này sẽ được tải tự động khi Seaborn được import vào trong notebook.Tôi đã thấy những thiết lập này rất tốt và thường sử dụng chúng làm mặc định trong quá trình khám phá dữ liệu của mình.

import seabornhist_and_lines()
ảnh ví dụ - data science lại blog của lưu

Với tất cả các tùy chọn tích hợp sẵn cho các phong cách biểu đồ khác nhau, Matplotlib trở nên rất hữu ích cho cả việc tương tác hóa và tạo hình cho mục đích xuất bản. Trong suốt cuốn sách này, tôi sẽ thông thường sử dụng một hoặc nhiều trong các quy ước phong cách này khi tạo biểu đồ.