Hướng dẫn python colors code - mã màu python

Chúng ta đã kết thúc chuỗi các bài liên quan đến công việc tùy chỉnh các tham số cơ bản của hình vẽ như: Axis, Label, Ticks, Spines, Legends. Trong bài này chúng ta sẽ đánh giá tầm quan trọng của màu sắc.

Sự lựa chọn màu sắc trong quá trình data visualization không chỉ đơn thuần là sự lựa chọn thẩm mỹ, mà còn là một công cụ quan trọng để chuyển tải thông tin định lượng. Lựa chọn đúngmàu truyền tải dữ liệu chính xác, ngược với nhiều màuthường có thể bóp méo các mối quan hệgiữa các giá trị dữ liệu. Sử dụng màu sắc hợp lý cũng cho phép nhiều bộ dữ liệuđược xếp lớp lại với nhau, giúp tạo ra graphscó thể chỉ ra “nguyên nhân và kết quả”. Có nhiều lý thuyết về sử dụng màu trong việc hình dung, vàhiển thị các phương pháp để lựa chọn các bảng màu hiệu quả và các bạn có thể tìm đâu đó trên mạng để có được cách chọn màu hợp lý cho dữ liệu của bạn. data visualization không chỉ đơn thuần là sự lựa chọn thẩm mỹ, mà còn là một công cụ quan trọng để chuyển tải thông tin định lượng. Lựa chọn đúng màu truyền tải dữ liệu chính xác, ngược với nhiều màu thường có thể bóp méo các mối quan hệ giữa các giá trị dữ liệu. Sử dụng màu sắc hợp lý cũng cho phép nhiều bộ dữ liệu được xếp lớp lại với nhau, giúp tạo ra graphs có thể chỉ ra “nguyên nhân và kết quả. Có nhiều lý thuyết về sử dụng màu trong việc hình dung, và hiển thị các phương pháp để lựa chọn các bảng màu hiệu quả và các bạn có thể tìm đâu đó trên mạng để có được cách chọn màu hợp lý cho dữ liệu của bạn.

Trong bài viết này tôi muốn giới thiệu các loại màu và bảng màu mà matplotlib hỗ trợ. Điều này rất quan trọng giúp bạn chọn lựa chính xác màu trong matplotlib.

Matplotlib nhận dạng các định dạng sau để chỉ định màu:           Bộ ký tự RGB hoặc RGBA có các giá trị thực nằm trong đoạn [0, 1] (ví dụ, (0.1, 0.2, 0.5) hoặc (0.1, 0.2, 0.5, 0.3));
          Bộ ký tự RGB hoặc RGBA có các giá trị thực nằm trong đoạn [0, 1] (ví dụ, (0.1, 0.2, 0.5) hoặc (0.1, 0.2, 0.5, 0.3));

          Một chuỗi RGB hoặc RGBA hex (ví dụ: '# 0F0F0F' hoặc '# 0F0F0F0F').

          Biểu diễn chuỗi giá trị thực trong [0, 1] bao gồm cả cấp độ màu xám (ví dụ: '0.5').

          Một trong số {b ',' g ',' r ',' c ',' m ',' y ',' k ',' w '}.Một trong số {b ',' g ',' r ',' c ',' m ',' y ',' k ',' w '}.

          Tên màu X11 / CSS4. (sẽ được nhắc lại) (sẽ được nhắc lại)

          Tên từ https://xkcd.com/color/rgb/ thêm tiền tố 'xkcd:' ( ví dụ: 'xkcd:purple’) (sẽ được nhắc lại)Tên từ https://xkcd.com/color/rgb/ thêm tiền tố 'xkcd:' ( ví dụ: 'xkcd:purple’) (sẽ được nhắc lại)

          Là một trong những tab {'tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan'} đến từ phân loại của Tableau Colors. một trong những tab {'tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan'} đến từ phân loại của Tableau Colors.

          Thông số màu "CN", tức là 'C' theo sau bởi một chữ số đơn, là một chỉ mục vào chu trình thuộc tính mặc định (matplotlib.rcParams['axes.prop_cycle']); lập chỉ mục xảy ra trong thời gian tạo tác của artist và mặc định là màu đen nếu chu kỳ không bao gồm màu. (sẽ được nhắc lại)Thông số màu "CN", tức là 'C' theo sau bởi một chữ số đơn, là một chỉ mục vào chu trình thuộc tính mặc định (matplotlib.rcParams['axes.prop_cycle']); lập chỉ mục xảy ra trong thời gian tạo tác của artist và mặc định là màu đen nếu chu kỳ không bao gồm màu. (sẽ được nhắc lại)

Thông số màu "CN"

Color có thể được xác định bởi một chuỗi khớp với regex C[0-9]. Điều này có thể được thông qua bất kỳ nơi mà một màu sắc hiện đang được chấp nhận và có thể được sử dụng như một 'kí tự màu’như ‘k’. có thể được xác định bởi một chuỗi khớp với regex C[0-9]. Điều này có thể được thông qua bất kỳ nơi mà một màu sắc hiện đang được chấp nhận và có thể được sử dụng như một 'kí tự màu’ như ‘k’.


Các chữ là chỉ số của matplotlib.rcParams ['axes.prop_cycle']. Nếu chu trình thuộc tính không bao gồm 'color' thì màu đen sẽ được trả về. Màu sắc được đánh giá khi astist được tạo ra. Ví dụ, dù là hai cách gán màu khác nhau nhưng đều cho cùng một kết quả. ‘C1’ sẽ tương ứng với giá trị u'#55A868' trong mpl.rcParams['axes.prop_cycle'].của matplotlib.rcParams ['axes.prop_cycle']. Nếu chu trình thuộc tính không bao gồm 'color' thì màu đen sẽ được trả về. Màu sắc được đánh giá khi astist được tạo ra. Ví dụ, dù là hai cách gán màu khác nhau nhưng đều cho cùng một kết quả. ‘C1’ sẽ tương ứng với giá trị u'#55A868' trong mpl.rcParams['axes.prop_cycle'].

>>> import numpy as np

>>> import matplotlib.pyplot as plt

>>> import matplotlib as mpl

>>> th = np.linspace(0, 2*np.pi, 128)

>>> print matplotlib.rcParams['axes.prop_cycle']

>>> print mpl.rcParams['axes.prop_cycle']

cycler(u'color', [u'#4C72B0', u'#55A868', u'#C44E52', u'#8172B2', u'#CCB974', u'#64B5CD'])

>>> plt.plot(th, np.cos(th), 'C1', label='C1')

[]

>>> plt.show()

>>> plt.plot(th, np.cos(th), '#55A868', label='C1')

[]

>>> plt.show()

Thông số màu X11 / CSS4 và xkcdX11 / CSS4 và xkcd

Có 95 (trong số 148 màu trong danh sách màu css) xung đột giữa tên CSS4 / X11 và tên xkcd. CSS4 / X11 cho rằng là tên màu chuẩn của web, matplotlib nên theo họ. Do đó, các tên màu xkcd được đặt trước bằng 'xkcd:', ví dụ như bản đồ 'xanh' tới '# 0000FF' trong đó ở dạng 'xkcd: blue' bản đồ là '# 0343DF'.Vì bảng khá là rộng, nên tôi khuyến khích các bạn tự chạy đoạn mã sau để thấy được chi tiết xung đột này. cho rằng là tên màu chuẩn của web, matplotlib nên theo họ. Do đó, các tên màu xkcd được đặt trước bằng 'xkcd:', ví dụ như bản đồ 'xanh' tới '# 0000FF' trong đó ở dạng 'xkcd: blue' bản đồ là '# 0343DF'. Vì bảng khá là rộng, nên tôi khuyến khích các bạn tự chạy đoạn mã sau để thấy được chi tiết xung đột này.

import matplotlib.pyplot as plt

  import matplotlib._color_data as mcd

  import matplotlib.patches as mpatch

  

overlap = {name for name in mcd.CSS4_COLORS

           if "xkcd:" + name in mcd.XKCD_COLORS}

  

fig = plt.figure(figsize=[4.8, 16])

ax = fig.add_axes([0, 0, 1, 1])

  

  for j, n in enumerate(sorted(overlap, reverse=True)):

    weight = None

    cn = mcd.CSS4_COLORS[n]

    xkcd = mcd.XKCD_COLORS["xkcd:" + n].upper()

    if cn == xkcd:

        weight = 'bold'

  

    r1 = mpatch.Rectangle((0, j), 1, 1, color=cn)

    r2 = mpatch.Rectangle((1, j), 1, 1, color=xkcd)

    txt = ax.text(2, j+.5, '  ' + n, va='center', fontsize=10,

                  weight=weight)

    ax.add_patch(r1)

    ax.add_patch(r2)

    ax.axhline(j, color='k')

  

ax.text(.5, j + 1.5, 'X11', ha='center', va='center')

ax.text(1.5, j + 1.5, 'xkcd', ha='center', va='center')

ax.set_xlim(0, 3)

ax.set_ylim(0, j + 2)

ax.axis('off')

Để thuận lợi cho việc tra cứu bảng màu, các bạn có thể chạy đoạn mã sau để liệt kê tên của tất cả các màu thuộc hai mã CCS4 và XDCD.

import matplotlib.pyplot as plt
import matplotlib._color_data as mcd
import matplotlib.patches as mpatch

def ListAllColors(name,colors):

    columns =0
   rows = 30

   part = 0
   fig = plt.figure("%s part %d" % (name,part+1), figsize=(15, 15))
    ax = fig.add_axes([0, 0, 1, 1])

    ax.set_ylim(0, rows)
    ax.axis('off')

   for j, n in enumerate(sorted(colors, reverse=True)):

       if j / 200 != part:
            part = j /200
           ax.set_xlim(0, columns)
            plt.show()
            fig = plt.figure("%s part %d" % (name,part + 1), figsize=(15, 15))
            ax = fig.add_axes([0, 0, 1, 1])
            ax.set_title("Color part %d" % part)
            ax.set_ylim(0, rows)
            ax.axis('off')

        j = j %200
       k = j % rows
        columns =int(j/rows)

        cn = colors[n]
        r1 = mpatch.Rectangle((columns, k),1, 1, color=cn)
        ax.text(columns, k +.5, '  ' + n, va='center', fontsize=15)
        ax.add_patch(r1)
        ax.axhline(k,color='k')
    ax.set_xlim(0, columns)
    plt.show()

ListAllColors("CSS4",mcd.CSS4_COLORS)
ListAllColors("XKCD",mcd.XKCD_COLORS)

Kết Luận

Màu sắc là một thành phần quan trong khi vẽ hình, nó không chỉ giúp cho các thành phần của đồ thị rõ ràng mà còn giúp cho người đọc có thẻ tập trung vào một vùng nào đó trên hình từ đó có thể dễ nhận ra insight trong dữ liệu. Bài học này đã giới thiệu khá đầu đủ về các loại màu và bảng màu mà matplotlib hỗ trợ dừ đó có thể hướng dẫn người đọc chọn được màu thích hợp với hình vẽ của mình.