سؤال

لديّ سلسلة من الخطوط التي يحتاج كل منها إلى رسمها بلون منفصل. يتكون كل سطر فعليًا من عدة مجموعات بيانات (إيجابية ، مناطق سلبية وما إلى ذلك) ولذا أود أن أكون قادرًا على إنشاء مولد يطعم لونًا واحدًا عبر الطيف ، على سبيل المثال 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))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top