উত্তর:
ম্যাটপ্লটলিব এটি ডিফল্টরূপে করে।
উদাহরণ:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
plt.plot(x, x)
plt.plot(x, 2 * x)
plt.plot(x, 3 * x)
plt.plot(x, 4 * x)
plt.show()
এবং, আপনি ইতিমধ্যে জানেন যে আপনি সহজেই একটি কিংবদন্তি যুক্ত করতে পারেন:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
plt.plot(x, x)
plt.plot(x, 2 * x)
plt.plot(x, 3 * x)
plt.plot(x, 4 * x)
plt.legend(['y = x', 'y = 2x', 'y = 3x', 'y = 4x'], loc='upper left')
plt.show()
আপনি যদি চক্রযুক্ত রঙগুলি নিয়ন্ত্রণ করতে চান তবে:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
plt.gca().set_color_cycle(['red', 'green', 'blue', 'yellow'])
plt.plot(x, x)
plt.plot(x, 2 * x)
plt.plot(x, 3 * x)
plt.plot(x, 4 * x)
plt.legend(['y = x', 'y = 2x', 'y = 3x', 'y = 4x'], loc='upper left')
plt.show()
আপনি যদি ম্যাটপ্লটলিবের সাথে অপরিচিত হন তবে টিউটোরিয়ালটি শুরু করার জন্য ভাল জায়গা ।
সম্পাদনা:
প্রথমে, যদি আপনার কাছে একটি চিত্রের উপর চক্রান্ত করতে চান এমন অনেকগুলি (> 5) জিনিস থাকে:
অন্যথায়, আপনি একটি খুব অগোছালো প্লট দিয়ে শেষ করতে যাচ্ছেন ! আপনি যা কিছু করছেন তা কখনই পড়তে চলেছেন কে ভালো লাগবে এবং একটি চিত্রের উপর 15 টি ভিন্ন জিনিস ক্র্যাম করার চেষ্টা করবেন না !!
এর বাইরেও, অনেক লোক বিভিন্ন ডিগ্রীতে রঙিন বর্ণের হয় এবং আপনি যতটা না বুঝতে পেরেছেন তার চেয়ে অনেক লোকের পক্ষে অসংখ্য সাবটলি বিভিন্ন রঙের মধ্যে পার্থক্য করা কঠিন।
বলা হয়ে থাকে, আপনি যদি সত্যই 20 টি তুলনামূলক স্বতন্ত্র রঙের সাথে একটি অক্ষের উপর 20 টি লাইন রাখতে চান তবে এটি করার একটি উপায় এখানে রয়েছে:
import matplotlib.pyplot as plt
import numpy as np
num_plots = 20
# Have a look at the colormaps here and decide which one you'd like:
# http://matplotlib.org/1.2.1/examples/pylab_examples/show_colormaps.html
colormap = plt.cm.gist_ncar
plt.gca().set_prop_cycle(plt.cycler('color', plt.cm.jet(np.linspace(0, 1, num_plots))))
# Plot several different functions...
x = np.arange(10)
labels = []
for i in range(1, num_plots + 1):
plt.plot(x, i * x + 5 * i)
labels.append(r'$y = %ix + %i$' % (i, 5*i))
# I'm basically just demonstrating several different legend options here...
plt.legend(labels, ncol=4, loc='upper center',
bbox_to_anchor=[0.5, 1.1],
columnspacing=1.0, labelspacing=0.0,
handletextpad=0.0, handlelength=1.5,
fancybox=True, shadow=True)
plt.show()
axes
) যথাযথভাবে পৃথক বক্ররেখা রঙ করে এবং বিভিন্ন প্লটে একক লাইনের বর্ণ পরিবর্তনের বিষয়ে জিজ্ঞাসা করেছিল (ভিন্ন axes
) ... এটি বলেছিল, একটি গুরুত্বপূর্ণটির উত্তম উত্তর প্রশ্ন (সম্ভবত ওপি যা চেয়েছিল তার চেয়ে আলাদা, তবে কেউই বলতে পারে না কারণ তারা এই একক প্রশ্ন জিজ্ঞাসা করেছিল এবং অদৃশ্য হয়ে গেছে!) - +1
আপনি প্লট করার যে প্লটের সংখ্যা জানেন না তা যদি আপনি একবার প্লট থেকে সরাসরি নম্বরটি পুনরুদ্ধার করে প্লট করার পরে রং পরিবর্তন করতে পারেন তবে .lines
আমি এই সমাধানটি ব্যবহার করব:
import matplotlib.pyplot as plt
import numpy as np
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
for i in range(1,15):
ax1.plot(np.array([1,5])*i,label=i)
colormap = plt.cm.gist_ncar #nipy_spectral, Set1,Paired
colors = [colormap(i) for i in np.linspace(0, 1,len(ax1.lines))]
for i,j in enumerate(ax1.lines):
j.set_color(colors[i])
ax1.legend(loc=2)
টিএল; ডিআর না, এটি স্বয়ংক্রিয়ভাবে করা যায় না । হ্যা এটা সম্ভব.
import matplotlib.pyplot as plt
my_colors = plt.rcParams['axes.prop_cycle']() # <<< note that we CALL the prop_cycle
fig, axes = plt.subplots(2,3)
for ax in axes.flatten(): ax.plot((0,1), (0,1), **next(my_colors))
প্রতিটি axes
চিত্রের ( figure
) একটি চিত্রের ( ) এর নিজস্ব চক্র রয়েছে - আপনি যদি প্রতিটি প্লটের জন্য আলাদা রঙ জোর না করেন তবে সমস্ত প্লট একই রঙের ক্রম ভাগ করে তবে আমরা যদি কিছুটা প্রসারিত করি তবে "স্বয়ংক্রিয়ভাবে" এর অর্থ কী? , এটা হতে পারে.
ওপি লিখেছেন
[...] আমাকে প্রতিটি প্লটকে আলাদা রঙের সাথে সনাক্ত করতে হবে যা [ম্যাটপ্ল্লোলিব] দ্বারা স্বয়ংক্রিয়ভাবে উত্পন্ন করা উচিত।
তবে ... ম্যাটপ্লটলিব প্রতিটি পৃথক বক্ররেখার জন্য স্বয়ংক্রিয়ভাবে বিভিন্ন রঙ উত্পন্ন করে
In [10]: import numpy as np
...: import matplotlib.pyplot as plt
In [11]: plt.plot((0,1), (0,1), (1,2), (1,0));
Out[11]:
তাহলে ওপি অনুরোধ কেন? যদি আমরা পড়তে থাকি, আমাদের আছে have
আপনি কি দয়া করে আমাকে একই চিত্রে বিভিন্ন প্লটের জন্য বিভিন্ন রঙ রাখার একটি পদ্ধতি দিতে পারেন?
এবং এটি উপলব্ধি করে, কারণ প্রতিটি প্লটের ( axes
ম্যাটপ্ল্লোলিবের পার্লেন্সে প্রতিটি ) নিজস্ব নিজস্ব color_cycle
(বা বরং 2018 সালে, এর prop_cycle
) এবং প্রতিটি প্লট axes
একই রঙগুলিকে একই ক্রমে পুনরায় ব্যবহার করে।
In [12]: fig, axes = plt.subplots(2,3)
In [13]: for ax in axes.flatten():
...: ax.plot((0,1), (0,1))
যদি এটি মূল প্রশ্নের অর্থ হয় তবে একটি সম্ভাবনা হ'ল প্রতিটি প্লটের জন্য স্পষ্টভাবে আলাদা রঙের নামকরণ করা।
প্লটগুলি (যেমনটি প্রায়শই ঘটে) কোনও লুপে উত্পন্ন হলে ম্যাটপ্ল্লোব দ্বারা স্বয়ংক্রিয়ভাবে নির্বাচিত রঙটি ওভাররাইড করতে আমাদের একটি অতিরিক্ত লুপ ভেরিয়েবল থাকতে হবে।
In [14]: fig, axes = plt.subplots(2,3)
In [15]: for ax, short_color_name in zip(axes.flatten(), 'brgkyc'):
...: ax.plot((0,1), (0,1), short_color_name)
আরেকটি সম্ভাবনা হ'ল সাইক্লার অবজেক্টটি ইনস্ট্যান্ট করা
from cycler import cycler
my_cycler = cycler('color', ['k', 'r']) * cycler('linewidth', [1., 1.5, 2.])
actual_cycler = my_cycler()
fig, axes = plt.subplots(2,3)
for ax in axes.flat:
ax.plot((0,1), (0,1), **next(actual_cycler))
নোট যে type(my_cycler)
হয় cycler.Cycler
কিন্তু type(actual_cycler)
হয় itertools.cycle
।
আমি আগের পোস্টে প্রদত্ত সর্বশেষ লুপ উত্তরের উপর একটি সামান্য উন্নতি প্রস্তাব করতে চাই (সেই পোস্টটি সঠিক এবং এখনও গ্রহণযোগ্য হওয়া উচিত)। শেষ উদাহরণটি লেবেল করার সময় অন্তর্নিহিত অনুমানটি হ'ল Xth সময় অনুসারে রেখার সাথে plt.label(LIST)
লেবেল নম্বরটি রাখে । আমি এই পদ্ধতির আগে সমস্যার মধ্যে পড়েছি। কিংবদন্তিগুলি তৈরি করতে এবং ম্যাটপ্ল্লিটবস ডকুমেন্টেশনের জন্য তাদের লেবেলগুলি কাস্টমাইজ করার প্রস্তাবিত উপায় ( http://matplotlib.org/users/legnd_guide.html#adjusting-the-order-of-legnd-item ) লেবেলগুলি যে অনুভূত হয় সঠিক প্লটগুলির সাথে আপনি কী ভাবেন বলে মনে করেন:LIST
plot
...
# Plot several different functions...
labels = []
plotHandles = []
for i in range(1, num_plots + 1):
x, = plt.plot(some x vector, some y vector) #need the ',' per ** below
plotHandles.append(x)
labels.append(some label)
plt.legend(plotHandles, labels, 'upper left',ncol=1)
set_color_cycle
করা হয়েছে, সুতরাং সেই লাইনটি হওয়া উচিতplt.gca().set_prop_cycle(plt.cycler('color', plt.cm.jet(np.linspace(0, 1, num_plots))))
এবংplt.cm.YOUR_PREFERED_COLOR_MAP
আপনার প্রয়োজন অনুসারে পরিবর্তন করা উচিত ।