2013-07-07 44 views
5

Tôi đang gặp khó khăn trong việc kiểm soát màu sắc và kiểu dáng của biểu đồ được vẽ bằng cách sử dụng hàm Matplotlib's hist với stacked=True. Đối với một biểu đồ không xếp chồng lên nhau duy nhất, tôi không có sự cố:facecolor kwarg cho Matplotlib xếp chồng lên nhau biểu đồ

import pylab as P 

mu, sigma = 200, 25 
x0 = mu + sigma*P.randn(10000) 

n, bins, patches = P.hist(
    x0, 20, 
    histtype='stepfilled', 
    facecolor='lightblue' 
    ) 

Tuy nhiên, khi tôi giới thiệu biểu đồ bổ sung,

import pylab as P 

mu, sigma = 200, 25 
x0 = mu + sigma*P.randn(10000) 
x1 = mu + sigma*P.randn(7000) 
x2 = mu + sigma*P.randn(3000) 

n, bins, patches = P.hist(
    [x0,x1,x2], 20, 
    histtype='stepfilled', 
    stacked=True, 
    facecolor=['lightblue','lightgreen','crimson'] 
    ) 

nó ném các lỗi sau:

ValueError: to_rgba: Invalid rgba arg "['lightblue', 'lightgreen', 'crimson']" 
could not convert string to float: lightblue 

Sử dụng Tùy chọn color=['lightblue', 'lightgreen', 'crimson'] không hoạt động, nhưng tôi muốn có quyền kiểm soát trực tiếp màu tô và đường kẻ riêng trong khi có thể sử dụng các màu Matplotlib có tên. Tôi đang sử dụng phiên bản 1.2.1 của Matplotlib.

Trả lời

3

facecolor cần phải là một tên màu duy nhất, không phải là một danh sách, nhưng thêm này sau khi sử dụng P.hist của bạn có thể có được công việc thực hiện cho bạn:

for patch in patches[0]: patch.set_facecolor('lightblue') 
for patch in patches[1]: patch.set_facecolor('lightgreen') 
for patch in patches[2]: patch.set_facecolor('crimson') 
+1

Điều đó đã làm việc, nhưng là không có cách nào để làm nội tuyến này với 'hist'? – xvtk

Các vấn đề liên quan