Color() làm gì trong python?

Sử dụng màu sắc phù hợp có thể làm cho hình ảnh của bạn trở nên sống động. Tuy nhiên, có thể khá khó để chọn màu tốt và ngay cả khi bạn biết mình muốn sử dụng màu nào, việc thực hiện hiệu ứng mong muốn có thể khó khăn

Chọn một bảng màu tốt là một khoa học tự nó và một số tài nguyên tuyệt vời về chủ đề đó có sẵn [được liệt kê ở cuối bài đăng này]. Bài đăng này tập trung vào những việc cần làm khi bạn đã chọn bảng màu mình muốn

Gói

for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
4 hỗ trợ tuyệt vời cho việc quản lý màu sắc và các ô, tuy nhiên, đôi khi có thể hơi khó để tìm ra cách kết hợp các lớp/hàm khác nhau trong gói này. Trong hướng dẫn này, chúng ta sẽ đi qua một vài ví dụ. Như thường lệ, tất cả mã tôi đã sử dụng đều nằm trong kho lưu trữ git này và bạn có thể theo dõi trong sổ ghi chép Jupyter tại đây

Đối với hướng dẫn này, chúng tôi sẽ sử dụng hai bộ dữ liệu liên quan đến thương mại quốc tế. Một bộ dữ liệu do Cơ quan Hàng hải Đan Mạch cung cấp cho thấy vị trí của giao thông đường biển quanh Đan Mạch. Bộ dữ liệu thứ hai, do Cục điều tra dân số Hoa Kỳ cung cấp, cho thấy hàng nhập khẩu và xuất khẩu trong 20 năm qua từ/đến Hoa Kỳ.
Tôi đã thực hiện một số xử lý trước dữ liệu và bạn có thể tìm thấy thông tin chi tiết trong repo git cho hướng dẫn này.

Biểu đồ có giá trị mặc định

Vì hướng dẫn này là về màu sắc nên tôi sẽ trình bày chi tiết về cách tải và định dạng dữ liệu, bạn có thể tìm thấy mã cho điều đó trong sổ ghi chép Jupyter

Tôi đã tạo một mảng gọn gàng với mật độ lưu lượng truy cập đại dương được gọi là

for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
5 và Khung dữ liệu Pandas với các mục nhập được gọi là
for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
6

Hãy bắt đầu với một số lô cơ bản. Để tạo một biểu đồ mật độ từ một mảng có nhiều mảng, chúng ta có thể sử dụng hàm

for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
7 từ
for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
4

import matplotlib.pytplot as plt# define geographic extent of the image in latitude/longitude
bounds = [10.0, 11.0, 57.0, 58.0]
im = plt.imshow[np.log[data+1],
origin='lower',
extent=bounds]
plt.colorbar[im]

Lưu ý rằng chúng ta vẽ đồ thị logarit của mật độ. Thông tin thêm về điều đó bên dưới. Tương tự, chúng ta có thể tạo biểu đồ đường của dữ liệu Điều tra dân số Hoa Kỳ

for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]

Tôi cũng đã thêm một số nhãn trục và chú thích, và kết quả sẽ trông như thế này

Các ô có bảng màu mặc định

Các ô mặc định trông khá đẹp, tuy nhiên, chúng ta có thể thấy một số vấn đề. Trong trường hợp biểu đồ mật độ, tôi phải vẽ biểu đồ logarit của mật độ đó để có thể xem toàn bộ phạm vi dữ liệu. Tuy nhiên, thanh màu trong chú giải cũng hiển thị logarit của mật độ, đây không phải là điều chúng ta muốn. Hơn nữa, phần lớn cốt truyện kết thúc gần như cùng một màu.

Trong trường hợp các ô đường, hơi khó xác định đường nào tương ứng với năm nào vì màu sắc được sử dụng lại. Hơn nữa, bảng màu của biểu đồ đường khác với bảng màu của biểu đồ mật độ, khiến cho các biểu đồ trông bị ngắt kết nối

Điều chỉnh bản đồ màu hiện có

Hãy bắt đầu với biểu đồ mật độ. Mật độ giao thông đại dương được thể hiện trong dữ liệu của chúng tôi dưới dạng một giá trị duy nhất cho từng tọa độ kinh độ/vĩ độ. Chuyển đổi giá trị đó thành màu yêu cầu hai bước

  • Chúng tôi sử dụng bộ chuẩn hóa để chuyển đổi giá trị mật độ thành một số trong khoảng từ 0 đến 1
  • Chúng tôi sử dụng bản đồ màu để chuyển đổi giá trị chuẩn hóa đó thành ba số đại diện cho màu đỏ lục và lam [i. e. , một giá trị RGB]

Matplotlib có một số lớp cho điều đó. Để chuẩn hóa các giá trị mật độ của chúng tôi, matplotlib cung cấp cả bộ chuẩn hóa tuyến tính và phi tuyến tính. Ví dụ: chúng ta có thể sử dụng lớp

for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
1 để áp dụng tỷ lệ tuyến tính hoặc chúng ta có thể sử dụng các lớp như
for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
2 hoặc
for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
3 để sử dụng tỷ lệ phi tuyến tính.
Chúng ta sẽ nói nhiều hơn về bản đồ màu trong phần tiếp theo, vì vậy bây giờ chúng ta sẽ sử dụng bản đồ màu hiện có mà chúng ta truy xuất bằng hàm
for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
4.

from matplotlib.cm import get_cmap
from matplotlib.colors import PowerNorm
cmap = get_cmap['inferno']# we can adjust how our values are normalized
norm = PowerNorm[0.4, vmin=0, vmax=100]
# the colormap and normalizer can be passed directly to imshow
im = ax.imshow[data,
cmap=cmap,
norm=norm,
origin='lower',
extent=bounds]
# create a color bar with 10 ticks
plt.colorbar[im,ticks=np.arange[0, norm.vmax, norm.vmax/10]]

Đây là giao diện của các giá trị khác nhau đối với cài đặt

for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
5 và
for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
6 của bộ chuẩn hóa

Khám phá các tùy chọn mở rộng khác nhau

Lưu ý rằng các thanh màu hiện hiển thị các giá trị thực. Hãy áp dụng cùng một bản đồ màu cho biểu đồ đường của chúng tôi. Chúng tôi sẽ sử dụng chuẩn hóa tuyến tính, nhưng lần này chúng tôi cần tạo màu theo cách thủ công

line_norm = Normalize[1980, 2010]for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year, :]

norm_value = line_norm[year]
col = cmap[norm_value]

ax.plot[year_data['month'],
year_data['imports'],
lw=2,
c=col,
label=year]
# set the background and grid colors
plt.gca[].set_facecolor['#111111']
plt.grid[color='#555555']

Xem biểu đồ mật độ và biểu đồ đường cạnh nhau, chúng tôi nhận được điều này

Biểu đồ mật độ và biểu đồ đường thẳng với cùng một bảng màu

Ok, tốt hơn một chút. Ít nhất thì các âm mưu bây giờ trông giống như cả hai đều được thực hiện bởi cùng một người. Vẫn còn nhiều điều phải bàn cãi trong những âm mưu này, nhưng ít nhất giờ chúng ta đã biết cách kiểm soát điều đó. Tiếp theo, hãy tạo bản đồ màu của riêng chúng ta

Bảng màu tùy chỉnh

Có nhiều lý do để chọn một bảng màu. Sự rõ ràng là một điều quan trọng và người ta đã nói rất nhiều về cách sử dụng màu sắc để làm cho các ô dễ đọc hơn.

for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
4 cung cấp nhiều bản đồ màu được xác định trước để trợ giúp việc này. Phong cách cũng rất quan trọng. Có thể bạn cảm thấy như 'inferno' không gửi đúng thông điệp cho dữ liệu bạn đang trình bày hoặc có thể bạn chỉ muốn phù hợp với phong cách nội bộ của công ty mình. Để làm được điều đó, chúng ta cần xác định bản đồ màu của riêng mình

Có lẽ không nên chọn màu tùy ý cho bảng màu của bạn. Thật may mắn cho chúng tôi, có một số công cụ tuyệt vời giúp bạn chọn bảng màu như colorbrewer và paletton

Như đã đề cập trước đây, lớp

for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
8 chuyển đổi một số trong phạm vi từ 0 đến 1 thành bộ ba RGB. Để xây dựng lớp như vậy,
for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
4 có một lớp tiện ích hay gọi là
from matplotlib.cm import get_cmap
from matplotlib.colors import PowerNorm
cmap = get_cmap['inferno']# we can adjust how our values are normalized
norm = PowerNorm[0.4, vmin=0, vmax=100]
# the colormap and normalizer can be passed directly to imshow
im = ax.imshow[data,
cmap=cmap,
norm=norm,
origin='lower',
extent=bounds]
# create a color bar with 10 ticks
plt.colorbar[im,ticks=np.arange[0, norm.vmax, norm.vmax/10]]
0. Chúng ta có thể khởi tạo lớp này bằng cách cung cấp một danh sách các màu;

for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
2

Sử dụng các bản đồ màu và bộ chuẩn hóa này như trước đây, chúng tôi nhận được biểu đồ bên dưới

Hoặc, nếu bạn thích thứ gì đó hoạt động với nền trắng, chúng ta có thể thử điều này

for year in sorted[data.year.unique[], reverse=True]:
year_data = data.loc[data.year==year,:]
plt.plot[year_data['month'],
year_data['imports'],
lw=2,
label=year]
3

Bạn có thể xem mã hoàn chỉnh của tất cả các ví dụ này trong sổ ghi chép Jupyter này

đọc thêm

Như tôi đã đề cập trước đây, việc lựa chọn hoặc thiết kế một bản đồ màu tốt bản thân nó là một môn khoa học. Nếu bạn muốn tìm hiểu về cách thiết kế bản đồ màu mặc định trong matplotlib, bạn có thể đọc về bản đồ màu đồng nhất về cảm nhận. Ngoài ra, đây là một bài đăng về lời khuyên chung về việc sử dụng màu sắc trong trực quan hóa dữ liệu. Nhiều liên kết đến dữ liệu và tài liệu có trong sổ ghi chép Jupyter

Màu sắc có ý nghĩa gì trong Python?

Màu xanh lá cây = một chuỗi Màu xám = một nhận xét Màu da cam = một số hoặc một tham số [hoặc tên thuộc tính được xác định trước [ví dụ:. length ]] Purple = từ khóa đặc biệt [như var , if , other , v.v.] Light-blue = toán tử [ + , - , * , / , = , < , == , && , v.v.] Dark-blue = tên hàm được xác định trước

Có một chức năng màu trong Python?

Hàm màu cây đũa phép[] trong Python . Sử dụng các đối số giống như phương thức color[].

Mô-đun màu trong Python là gì?

mô-đun termcolor là mô-đun python để định dạng Màu ANSII cho đầu ra trong thiết bị đầu cuối . Ví dụ. Chương trình Python để in văn bản và nền màu.

Màu sắc trong Matplotlib là gì?

màu sắc. RGB và RGBA lần lượt là chuỗi 3 hoặc 4 số float trong phạm vi 0-1 . Mô-đun này bao gồm các hàm và lớp để chuyển đổi đặc tả màu và để ánh xạ số thành màu trong mảng màu 1-D được gọi là bản đồ màu.

Chủ Đề