قم بإنشاء مولد ألوان من colormap المعطى في matplotlib
-
26-09-2019 - |
سؤال
لديّ سلسلة من الخطوط التي يحتاج كل منها إلى رسمها بلون منفصل. يتكون كل سطر فعليًا من عدة مجموعات بيانات (إيجابية ، مناطق سلبية وما إلى ذلك) ولذا أود أن أكون قادرًا على إنشاء مولد يطعم لونًا واحدًا عبر الطيف ، على سبيل المثال gist_rainbow
خريطة يظهر هنا.
لقد وجدت الأعمال التالية ولكن يبدو الأمر معقدًا للغاية وأهم
from pylab import *
NUM_COLORS = 22
mp = cm.datad['gist_rainbow']
get_color = matplotlib.colors.LinearSegmentedColormap.from_list(mp, colors=['r', 'b'], N=NUM_COLORS)
...
# Then in a for loop
this_color = get_color(float(i)/NUM_COLORS)
علاوة على ذلك ، لا يغطي نطاق الألوان في gist_rainbow
الخريطة ، لا بد لي من إعادة تعريف الخريطة.
ربما لم يكن المولد هو أفضل طريقة للقيام بذلك ، إذا كان الأمر كذلك فما هي الطريقة المقبولة؟
المحلول
لفهرسة الألوان من colormap معين يمكنك استخدامه:
import pylab
NUM_COLORS = 22
cm = pylab.get_cmap('gist_rainbow')
for i in range(NUM_COLORS):
color = cm(1.*i/NUM_COLORS) # color will now be an RGBA tuple
# or if you really want a generator:
cgen = (cm(1.*i/NUM_COLORS) for i in range(NUM_COLORS))
لا تنتمي إلى StackOverflow