Như câu trả lời của Ciro ghi chú, bạn có thể sử dụng prop_cycle
để thiết lập danh sách các màu cho matplotlib để thay đổi. Nhưng có mấy màu? Điều gì sẽ xảy ra nếu bạn muốn sử dụng cùng một chu kỳ màu cho nhiều lô, với số lượng đường khác nhau?
Một chiến thuật sẽ là sử dụng một công thức giống như công thức từ https://gamedev.stackexchange.com/a/46469/22397 , để tạo ra một chuỗi màu vô hạn trong đó mỗi màu cố gắng khác biệt đáng kể với tất cả những màu đứng trước nó.
Thật không may, prop_cycle
sẽ không chấp nhận các chuỗi vô hạn - nó sẽ treo mãi mãi nếu bạn vượt qua nó. Nhưng chúng ta có thể lấy 1000 màu đầu tiên được tạo ra từ một chuỗi như vậy và đặt nó làm chu kỳ màu. Bằng cách đó, đối với các ô có bất kỳ số dòng nào, bạn sẽ có được màu sắc dễ phân biệt.
Thí dụ:
from matplotlib import pyplot as plt
from matplotlib.colors import hsv_to_rgb
from cycler import cycler
# 1000 distinct colors:
colors = [hsv_to_rgb([(i * 0.618033988749895) % 1.0, 1, 1])
for i in range(1000)]
plt.rc('axes', prop_cycle=(cycler('color', colors)))
for i in range(20):
plt.plot([1, 0], [i, i])
plt.show()
Đầu ra:
Bây giờ, tất cả các màu đều khác nhau - mặc dù tôi thừa nhận rằng tôi rất vất vả để phân biệt một vài màu trong số chúng!