2015-02-10 16 views
16

Làm cách nào để tôi có được màu sắc bẩm sinh khi thực hiện một âm mưu phân tán?chu kỳ bẩm sinh qua màu sắc với phân tán matplotlib

import matplotlib.pyplot as plt 
import seaborn as sns 
ax=fig.add_subplot(111) 
for f in files: 
    ax.scatter(args) # all datasets end up same colour 
    #plt.plot(args) # cycles through palette correctly 
+0

Đây là 'tính năng', không phải 'lỗi' 'phân tán' là' ScalarMappable' có nghĩa là bạn có thể gán giá trị vô hướng cho mỗi điểm đánh dấu sẽ được sử dụng (cùng với bản đồ màu) tô màu từng điểm đánh dấu theo giá trị vô hướng. Cho rằng, có 'phân tán' tham gia vào logic chu kỳ màu sắc có vẻ ngớ ngẩn/quá khó sử dụng. Một lưu ý phụ, trừ khi bạn thay đổi kích thước của các điểm đánh dấu, có lẽ tốt hơn nên sử dụng 'cốt truyện' không có dòng (nó sẽ đi nhanh hơn). – tacaswell

+0

Cảm ơn bạn đã tip về cách sử dụng cốt truyện :) Tôi đã không cho rằng đó là một lỗi, chỉ cần hỏi làm thế nào để làm điều đó. – amn41

Trả lời

30

Bạn phải thông báo cho matplotlib dùng màu nào. Để sử dụng, ví dụ, bảng màu mặc định sanh ở biển của:

import matplotlib.pyplot as plt 
import seaborn as sns 
import itertools 
ax=fig.add_subplot(111) 

palette = itertools.cycle(sns.color_palette()) 

for f in files: 
    ax.scatter(args, color=next(palette)) 

Các itertools.cycle làm cho chắc chắn chúng tôi không chạy ra khỏi màu sắc và bắt đầu với một trong những đầu tiên trở lại sau khi sử dụng cuối cùng.

0

Để xây dựng dựa trên câu trả lời Carsten, nếu bạn có một số lượng lớn các loại để gán màu sắc để, bạn có thể muốn nén màu sắc sang một bảng sanh ở biển rất lớn, ví dụ như xkcd_palette hoặc crayon_palette .. Lưu ý rằng thực hành này là thường là a chartjunk anti-pattern: sử dụng nhiều hơn 5-6 màu thường quá mức cần thiết và bạn có thể cần cân nhắc việc thay đổi loại biểu đồ của mình.

import matplotlib.pyplot as plt 
import seaborn as sns 

palette = zip(df['category'].unique(), sns.crayons.values()) 
Các vấn đề liên quan