রঙচক্র পুনরুক্তি অ্যাক্সেস করা হচ্ছে
অন্তর্নিহিত পুনরাবৃত্তিকে অ্যাক্সেস করার জন্য কোনও "ব্যবহারকারীর মুখোমুখি" (ওরফে "পাবলিক") পদ্ধতি নেই তবে আপনি এটি "ব্যক্তিগত" (কনভেনশন দ্বারা) পদ্ধতিগুলির মাধ্যমে অ্যাক্সেস করতে পারেন। তবে, আপনি iterator
এটির পরিবর্তন না করে একটি রাজ্য পেতে পারবেন না ।
রঙচক্র সেট করা হচ্ছে
দ্রুত সরানো: আপনি রঙ / সম্পত্তি চক্রটি বিভিন্ন উপায়ে সেট করতে পারেন (যেমন ax.set_color_cycle
সংস্করণ <1.5 বা ax.set_prop_cycler
ইন> = 1.5)। সংস্করণ 1.5 বা তার বেশি বা এখানে পূর্ববর্তী শৈলীর জন্য উদাহরণটি দেখুন ।
অন্তর্নিহিত পুনরুক্তিকারী অ্যাক্সেস করা
তবে, পুনরাবৃত্তিযোগ্য অ্যাক্সেসের জন্য জনসাধারণের মুখোমুখি কোনও পদ্ধতি নেই, তবে আপনি সহায়ক শ্রেণীর উদাহরণের ax
মাধ্যমে কোনও প্রদত্ত অক্ষের অবজেক্টের জন্য এটি অ্যাক্সেস করতে পারবেন _get_lines
। ax._get_lines
একটি স্পর্শ যা বিভ্রান্তিকরভাবে নামকরণ করা হয়েছে, তবে এটি পর্দার আড়ালে থাকা যন্ত্রপাতি যা plot
কমান্ডকে সমস্ত অদ্ভুত এবং বিচিত্র পদ্ধতিতে কল করার অনুমতি দেয় plot
। অন্যান্য জিনিসগুলির মধ্যে এটি কী রঙগুলি স্বয়ংক্রিয়ভাবে নির্ধারণ করে তা ট্র্যাক করে। একইভাবে, ax._get_patches_for_fill
ডিফল্ট ভরাট রঙ এবং প্যাচ বৈশিষ্ট্যগুলির মাধ্যমে সাইক্লিং নিয়ন্ত্রণ করতে হবে।
যে কোনও হারে, রঙচক্র পুনরাবৃত্তযোগ্য ax._get_lines.color_cycle
লাইনগুলির ax._get_patches_for_fill.color_cycle
জন্য এবং প্যাচগুলির জন্য। ম্যাটপ্ল্লোলিব> = 1.5 এ, এটি cycler
লাইব্রেরিটি ব্যবহার করতে পরিবর্তিত হয়েছে এবং এর prop_cycler
পরিবর্তে পুনরাবৃত্তিযোগ্য বলা হয় color_cycle
এবং dict
কেবল একটি বর্ণের পরিবর্তে বৈশিষ্ট্যগুলির একটি ফলন করে ।
সব মিলিয়ে আপনি এমন কিছু করতে চাইবেন:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
color_cycle = ax._get_lines.color_cycle
আপনি কোনটির অবস্থা দেখতে পারবেন না iterator
তবে এই বস্তুটি একটি "বেয়ার" iterator
। আমরা খুব সহজেই পরবর্তী আইটেম (যেমন পেতে পারেন next_color = next(color_cycle)
, কিন্তু তার মানে তাদের পরবর্তী রঙ যে পরে কি অঙ্কিত করা হবে। নকশা দ্বারা, সেখানে এটি পরিবর্তন না করে কোনো ইটারেটরে বর্তমান অবস্থা পাওয়ার কোন উপায়।
ইন v1.5
বা তার অধিক, এটি পেতে চমৎকার হবে cycler
বস্তুর যে ব্যবহার আমরা এটির বর্তমান অবস্থায় আবিষ্কার পারে। তবে, cycler
অবজেক্টটি নিজেই কোথাও অ্যাক্সেসযোগ্য নয় (প্রকাশ্যে বা ব্যক্তিগতভাবে)। পরিবর্তে, কেবলমাত্র বস্তুটি itertools.cycle
থেকে তৈরি দৃষ্টান্তটি cycler
অ্যাক্সেসযোগ্য। যে কোনও উপায়ে, রঙ / সম্পত্তি সাইক্লারের অন্তর্নিহিত অবস্থায় যাওয়ার কোনও উপায় নেই।
পরিবর্তে আগের প্লট করা আইটেমের রঙটি মিলান
আপনার ক্ষেত্রে এটির মতো শোনা যাচ্ছে যে আপনি সবেমাত্র ষড়যন্ত্র করা কোনও রঙের সাথে মেলে করতে চান। রঙ / সম্পত্তি কী হবে তা নির্ধারণের পরিবর্তে, কী পরিকল্পনা করা হয়েছে তার বৈশিষ্ট্যের ভিত্তিতে আপনার নতুন আইটেমের রঙ / ইত্যাদি সেট করুন।
উদাহরণস্বরূপ, আপনি বর্ণিত ক্ষেত্রে, আমি এই জাতীয় কিছু করব:
import matplotlib.pyplot as plt
import numpy as np
def custom_plot(x, y, **kwargs):
ax = kwargs.pop('ax', plt.gca())
base_line, = ax.plot(x, y, **kwargs)
ax.fill_between(x, 0.9*y, 1.1*y, facecolor=base_line.get_color(), alpha=0.5)
x = np.linspace(0, 1, 10)
custom_plot(x, x)
custom_plot(x, 2*x)
custom_plot(x, -x, color='yellow', lw=3)
plt.show()
একমাত্র উপায় নয়, তবে এই ক্ষেত্রে প্লট করা লাইনের রঙ পাওয়ার চেষ্টা করার চেয়ে তার ক্লিনার।