2015-04-04 14 views
5

Làm việc tại IJulia. Cố gắng hết sức để tạo một bản đồ màu tùy chỉnh. thử dòng:Cách tạo bản đồ màu tùy chỉnh bằng PyPlot (không thích hợp với matplotlib)

matplotlib.colors.ListedColormap([(1,0,0),(0,1,0),(0,0,1)],"A") 

mà dẫn đến các lỗi sau

loại PyObject không có màu sắc lĩnh vực trong khi tải Trong [16], trong biểu hiện bắt đầu từ ngày dòng 1

mà có nghĩa là tôi không thể sử dụng trực tiếp matplotlib, nhưng chỉ có các chức năng trong PyPlot.

Tôi không thể liên quan đến matplotlib có nhập (vì điều này không hợp lệ trong IJulia). Tôi đã lưu ý rằng những người khác đã được giúp đỡ về các vấn đề tương tự, nhưng điều đó không giải quyết được vấn đề của tôi.

Trả lời

3

Bằng việc sử dụng gói PyCall mà PyPlot đang sử dụng để quấn matplotlib bạn có thể có được một bản đồ màu như thế này:

using PyCall 
@pyimport matplotlib.colors as matcolors 
cmap = matcolors.ListedColormap([(1,0,0),(0,1,0),(0,0,1)],"A") 

Để lĩnh vực truy cập trong một PyObject bạn cần chỉ mục các đối tượng với một biểu tượng như:

cmap[:set_over]((0,0,0)) 

Điều này tương đương với: cmap.set_over((0,0,0)) trong python. Để biết các ví dụ hay khác về cách vẽ các loại ô khác nhau bằng cách sử dụng PyPlot, hãy xem các ví dụ sau: https://gist.github.com/gizmaa/7214002

+0

Cảm ơn bạn rất nhiều. Hoạt động hoàn hảo. Jusst tự hỏi làm thế nào tôi có thể đã tìm thấy giải pháp này bằng cách sử dụng các tài nguyên trên mạng. Bất kỳ đề xuất. Tôi không ấn tượng lắm về tài liệu như một trợ giúp cho người mới. Ngoài ra cảm ơn rất nhiều cho việc làm sạch về câu hỏi ban đầu của tôi. –

+0

Khi sử dụng một gói, cách tốt nhất để có được kiến ​​thức là tìm trong readme trên GitHub, xem https://github.com/stevengj/PyCall.jl/blob/master/README.md. –

0

Bạn không cần sử dụng PyCall để gọi trực tiếp Python (mặc dù đây là tùy chọn). Bạn cũng có thể chỉ sử dụng các hàm tạo PyPlot cho ColorMap để tạo bản đồ màu từ (r, g, b) hoặc một mảng màu như được định nghĩa trong gói Julia Color. Xem số PyPlot ColorMap documentation. Ví dụ:

using PyPlot, Color 
ColorMap("A", [RGB(1,0,0),RGB(0,1,0),RGB(0,0,1)]) 
Các vấn đề liên quan