2012-10-12 32 views
11

Tôi đang sử dụng lớp matplotlib.patches.Polygon để vẽ các đa giác trên bản đồ. Trong thực tế, thông tin về các tọa độ của các góc của đa giác và một giá trị dữ liệu dấu chấm động cho mỗi "đa giác" được đưa ra. Bây giờ tôi muốn chuyển đổi các giá trị dữ liệu này (từ 0 đến 3e15) thành thông tin màu để trực quan hóa nó một cách độc đáo. Thực hành tốt nhất để làm điều đó bằng Python là gì?Làm thế nào để chuyển đổi các giá trị dữ liệu thành thông tin màu cho matplotlib?

Một đoạn mã của tôi:

poly = Polygon(xy, facecolor=data, edgecolor='none') 
plt.gca().add_patch(poly) 
+0

từ sự giúp đỡ (matplotlib.pyplot .plot): 'bạn có thể chỉ định màu theo nhiều cách kỳ lạ và cách tuyệt vời, bao gồm tên đầy đủ ('xanh'), hex chuỗi ('# 008000'), RGB hoặc RGBA tuples ((0,1,0,1)) hoặc cường độ xám như một chuỗi ('0.8') ' –

Trả lời

20

Trong hệ thống màu RGB hai bit dữ liệu được sử dụng cho mỗi màu, đỏ, xanh lá cây, và màu xanh. Điều đó có nghĩa là mỗi màu chạy trên thang điểm từ 0 đến 255. Màu đen sẽ là 00,00,00, trong khi màu trắng sẽ là 255,255,255. Matplotlib có rất nhiều colormaps được xác định trước để bạn sử dụng. Họ đều là bình thường đến 255, vì vậy họ chạy từ 0 đến 1. Vì vậy, bạn chỉ cần chuẩn hóa dữ liệu của bạn, sau đó bạn có thể tự chọn màu từ bản đồ màu sắc như sau:

>>> import matplotlib.pyplot as plt 

>>> Blues = plt.get_cmap('Blues') 
>>> print Blues(0) 
(0.9686274528503418, 0.9843137264251709, 1.0, 1.0) 
>>> print Blues(0.5) 
(0.41708574119736169, 0.68063054575639614, 0.83823145908467911, 1.0) 
>>> print Blues(1.0) 
(0.96555171293370867, 0.9823452528785257, 0.9990157632266774, 1.0) 

Dưới đây là tất cả các predefined colormaps. Nếu bạn quan tâm đến việc tạo bản đồ màu của riêng mình, here là một ví dụ tốt. Ngoài ra here là một bài báo của IBM về việc lựa chọn màu sắc một cách cẩn thận, một cái gì đó bạn nên xem xét nếu bạn đang sử dụng màu sắc để hình dung dữ liệu.

+0

Thx! Làm việc như một say mê! – HyperCube

+0

Tôi đang bối rối, 256 là 2 ** 8, có lẽ bạn có nghĩa là 8 bit = 1 byte dữ liệu cho mỗi màu? – Ziofil

1

Tôi nghĩ rằng những gì bạn đang tìm kiếm là một bản đồ màu. Xem bài viết sau đây để biết thông tin về cách sử dụng những người được cung cấp bởi matplotlib.

Using Colormaps to set color of line in matplotlib

Nếu bạn muốn làm của riêng của mình, trang dưới đây cung cấp một ví dụ tốt đẹp.

http://code.activestate.com/recipes/52273-colormap-returns-an-rgb-tuple-on-a-0-to-255-scale-/

+0

Điều này rất hữu ích, cảm ơn bạn! – HyperCube

3

Để chuyển đổi một giá trị từ mà đi từ 0 đến + vô cực đến một giá trị mà đi từ 0.0 đến 1,0

import matplotlib.pyplot as plt 

price_change = price_change ** 2/(1 + price_change ** 2) 
Blues = plt.get_cmap('Blues') 
print Blues(price_change) 

Một danh sách đầy đủ của colormaps là ở đây: http://matplotlib.org/users/colormaps.html

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