ডিফল্ট লাইন রঙ চক্র পান


95

আমি লক্ষ্য করেছি আপনি যখন প্লট করেছেন যে প্রথম লাইনটি নীল, তারপর সবুজ, তারপরে লাল এবং আরও অনেক কিছু।

রঙের এই তালিকাটি অ্যাক্সেস করার কোনও উপায় আছে? আমি কীভাবে রঙ চক্র পরিবর্তন করতে বা পুনরাবৃত্তিকে অ্যাক্সেস করতে পারি তার এক মিলিয়ন পোস্ট দেখেছি, তবে ডিফল্টরূপে ম্যাপপ্ল্লোলিব চক্রগুলি কীভাবে রঙের তালিকা পেতে পারে সে সম্পর্কে নয়।

উত্তর:


119

Matplotlib সংস্করণ> = 1.5, আপনি মুদ্রণ করতে পারেন rcParamনামক axes.prop_cycle:

print plt.rcParams['axes.prop_cycle'].by_key()['color']

# [u'#1f77b4', u'#ff7f0e', u'#2ca02c', u'#d62728', u'#9467bd', u'#8c564b', u'#e377c2', u'#7f7f7f', u'#bcbd22', u'#17becf']

বা সমতুল্য, এতে python3:

print(plt.rcParams['axes.prop_cycle'].by_key()['color'])

সংস্করণ <1.5 এ, এটি বলা হয়েছিল color_cycle:

print plt.rcParams['axes.color_cycle']

# [u'b', u'g', u'r', u'c', u'm', u'y', u'k']

নোট করুন যে ডিফল্ট রঙ চক্রটি ২.০.০ সংস্করণে পরিবর্তিত হয়েছে http://matplotlib.org/users/dflt_style_changes.html#colors-in-default-property-cycle


4
ধন্যবাদ! সামান্য সংশোধন: প্রথমটি হওয়া উচিত:lines_colour_cycle = [p['color'] for p in plt.rcParams['axes.prop_cycle']]
পিটার

4
@ পিটার, হ্যাঁ, বাplt.rcParams['axes.prop_cycle'].by_key()['color']
টিএমডাভিসন

91

প্রায়শই কোথাও থেকে ডিফল্ট রঙ চক্রের দরকার হয় না, কারণ এটি পূর্বনির্ধারিত একটি, তাই কেবল এটি ব্যবহার করা যথেষ্ট।

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

t = np.arange(5)

for i in range(4):
    line, = ax.plot(t,i*(t+1), linestyle = '-')
    ax.plot(t,i*(t+1)+.3,color = line.get_color(), linestyle = ':')

plt.show()

এখানে চিত্র বর্ণনা লিখুন

আপনি যদি অন্য কোনও কিছুর জন্য ডিফল্ট রঙ চক্র ব্যবহার করতে চান তবে অবশ্যই বেশ কয়েকটি বিকল্প রয়েছে।

"ট্যাব 10" রঙিন মানচিত্র

প্রথমে এটি উল্লেখ করা উচিত যে রঙিন মানচিত্রটি "tab10"ডিফল্ট রঙ চক্র থেকে বর্ণগুলি সমন্বিত করে , আপনি এটি মাধ্যমে পেতে পারেন cmap = plt.get_cmap("tab10")

উপরের সমতুল্য তাই হবে

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

t = np.arange(5)
cmap = plt.get_cmap("tab10")
for i in range(4):
    ax.plot(t,i*(t+1),   color=cmap(i), linestyle = '-')
    ax.plot(t,i*(t+1)+.3,color=cmap(i), linestyle = ':')

plt.show()

রঙ চক্র থেকে রঙ

আপনি সরাসরি রঙ সাইকেলটিও ব্যবহার করতে পারেন cycle = plt.rcParams['axes.prop_cycle'].by_key()['color'],। এটি চক্রের রঙগুলির সাথে তালিকা দেয়, যা আপনি পুনরাবৃত্তি করতে ব্যবহার করতে পারেন।

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

t = np.arange(5)
cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']

for i in range(4):
    ax.plot(t,i*(t+1),   color=cycle[i], linestyle = '-')
    ax.plot(t,i*(t+1)+.3,color=cycle[i], linestyle = ':')

plt.show()

CNস্বরলিপি

পরিশেষে, CNস্বরলিপিটি Nরঙচক্রের রং পেতে দেয় color="C{}".format(i),। এটি কেবল প্রথম 10 টি রঙের জন্য কাজ করে ( N in [0,1,...9])

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

t = np.arange(5)

for i in range(4):
    ax.plot(t,i*(t+1),   color="C{}".format(i), linestyle = '-')
    ax.plot(t,i*(t+1)+.3,color="C{}".format(i), linestyle = ':')

plt.show()

এখানে উপস্থাপিত সমস্ত কোড একই প্লট তৈরি করে।


কোনও ধরণের চক্র ব্যবহার করতে ম্যাটপ্লটলিবকে বলা কি সম্ভব? রঙের অ্যারেতে পুনরাবৃত্তি হওয়ার অর্থ আপনাকে একটি পূর্ণ চক্র ব্যবহারের পরে সূচক 0 এ ফিরে যাওয়ার জন্য যুক্তি যুক্ত করতে হবে।
মেহেদী

@ মেহেদী শিওর, ম্যাটপ্ল্লোব একটি রঙচক্র ব্যবহার করে। এই প্রশ্নটি এই চক্রটির রং পেতে বলে।
ImportanceOfBeingErnest

4
আমি মনে করি CNআপনার উত্তরে স্বরলিপিটি আরও বিশিষ্ট হওয়া উচিত, আমি এটি প্রায় মিস করেছি। আমি সন্দেহ করি যে ব্যবহারের বিস্তৃত সংখ্যা কেবলমাত্র প্রথম 10 টি রঙে অ্যাক্সেস করতে পেরে খুশি, এবং 'C1'কোনও বন্ধুদের পাস করা সুস্পষ্টভাবে প্রোপ চক্রটি ধরার চেয়ে কম বয়লারপ্লেট।
আন্দ্রেস ডেক 14'19

3

সিএন স্বরলিপি পুনরায় দেখা

আমি ম্যাটপ্ল্লিটিবের একটি নতুন বিকাশকে সম্বোধন করতে চাই। পূর্বের উত্তরে আমরা পড়ি

পরিশেষে, CNস্বরলিপিটি Nরঙচক্রের রং পেতে দেয় color="C{}".format(i),। এটি কেবল প্রথম 10 টি রঙের জন্য কাজ করে ( N in [0,1,...9])

কিন্তু

import numpy as np 
import matplotlib.pyplot as plt 

t = np.linspace(0,6.28, 629)                                                      
for N in (1, 2): 
    C0N, C1N = 'C%d'%(N), 'C%d'%(N+10) 
    plt.plot(t, N*np.sin(t), c=C0N, ls='-',  label='c='+C0N) 
    plt.plot(t, N*np.cos(t), c=C1N, ls='--', label='c='+C1N) 
plt.legend() ; plt.grid() ; plt.show()                                           

দেয়

এখানে চিত্র বর্ণনা লিখুন


2

আপনি যদি ম্যাটপ্লটলিব তার লাইনের জন্য যে আরজিবি রঙগুলি ব্যবহার করেন তা পেতে যদি দ্রুত ওয়ান-লাইনার সন্ধান করেন তবে তা এখানে:

>>> import matplotlib; print('\n'.join([str(matplotlib.colors.to_rgb(c)) for c in matplotlib.pyplot.rcParams['axes.prop_cycle'].by_key()['color']]))
(0.12156862745098039, 0.4666666666666667, 0.7058823529411765)
(1.0, 0.4980392156862745, 0.054901960784313725)
(0.17254901960784313, 0.6274509803921569, 0.17254901960784313)
(0.8392156862745098, 0.15294117647058825, 0.1568627450980392)
(0.5803921568627451, 0.403921568627451, 0.7411764705882353)
(0.5490196078431373, 0.33725490196078434, 0.29411764705882354)
(0.8901960784313725, 0.4666666666666667, 0.7607843137254902)
(0.4980392156862745, 0.4980392156862745, 0.4980392156862745)
(0.7372549019607844, 0.7411764705882353, 0.13333333333333333)
(0.09019607843137255, 0.7450980392156863, 0.8117647058823529)

বা uint8 এর জন্য:

import matplotlib; print('\n'.join([str(tuple(int(round(v*255)) for v in matplotlib.colors.to_rgb(c))) for c in matplotlib.pyplot.rcParams['axes.prop_cycle'].by_key()['color']]))
(31, 119, 180)
(255, 127, 14)
(44, 160, 44)
(214, 39, 40)
(148, 103, 189)
(140, 86, 75)
(227, 119, 194)
(127, 127, 127)
(188, 189, 34)
(23, 190, 207)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.