আপডেট: এটি করার কিছুটা ভাল পদ্ধতির জন্য উত্তরের নীচের অংশটি দেখুন।
আপডেট # 2: আমি কিংবদন্তির শিরোনাম ফন্টগুলিও বদলাতে পেরেছি।
আপডেট # 3: ম্যাটপ্ল্লোব ২.০.০ এ একটি বাগ রয়েছে যা লোগারিদমিক অক্ষগুলির জন্য টিক লেবেলগুলিকে ডিফল্ট ফন্টে ফিরিয়ে আনছে । ২.০.১ এ স্থির করা উচিত তবে আমি উত্তরের ২ য় অংশে কাজটি অন্তর্ভুক্ত করেছি।
কিংবদন্তি সহ যে সকল ফন্ট পরিবর্তন করার চেষ্টা করছেন এবং যে কোনও একটির জন্য প্রতিটি ফন্ট এবং আকার ব্যবহার করার চেষ্টা করছেন এমন ব্যক্তির পক্ষে এই উত্তরটি। এটি আরসি ব্যবহার করে না (যা আমার পক্ষে কাজ করে না বলে মনে হয়)। এটি বরং কষ্টকর কিন্তু আমি ব্যক্তিগতভাবে অন্য কোনও পদ্ধতিতে গ্রিপ করতে পারিনি। এটি মূলত ryggyr এর উত্তরকে এখানে এসও এর অন্যান্য উত্তরগুলির সাথে একত্রিত করে।
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager
# Set the font dictionaries (for plot title and axis titles)
title_font = {'fontname':'Arial', 'size':'16', 'color':'black', 'weight':'normal',
'verticalalignment':'bottom'} # Bottom vertical alignment for more space
axis_font = {'fontname':'Arial', 'size':'14'}
# Set the font properties (for use in legend)
font_path = 'C:\Windows\Fonts\Arial.ttf'
font_prop = font_manager.FontProperties(fname=font_path, size=14)
ax = plt.subplot() # Defines ax variable by creating an empty plot
# Set the tick labels font
for label in (ax.get_xticklabels() + ax.get_yticklabels()):
label.set_fontname('Arial')
label.set_fontsize(13)
x = np.linspace(0, 10)
y = x + np.random.normal(x) # Just simulates some data
plt.plot(x, y, 'b+', label='Data points')
plt.xlabel("x axis", **axis_font)
plt.ylabel("y axis", **axis_font)
plt.title("Misc graph", **title_font)
plt.legend(loc='lower right', prop=font_prop, numpoints=1)
plt.text(0, 0, "Misc text", **title_font)
plt.show()
এই পদ্ধতির সুবিধাটি হ'ল, বেশ কয়েকটি ফন্ট অভিধান থাকলে আপনি বিভিন্ন শিরোনামের জন্য বিভিন্ন হরফ / আকার / ওজন / রঙ চয়ন করতে পারেন, টিক লেবেলের জন্য ফন্ট চয়ন করতে পারেন এবং সমস্ত স্বতন্ত্রভাবে কিংবদন্তির জন্য ফন্ট বেছে নিতে পারেন।
হালনাগাদ:
আমি কিছুটা আলাদা, কম বিশৃঙ্খলাযুক্ত পদ্ধতি তৈরি করেছি যা ফন্টের অভিধানগুলি সরিয়ে দেয় এবং আপনার সিস্টেমে কোনও ফন্টকে এমনকি .otf ফন্টকেও মঞ্জুরি দেয়। প্রতিটি জিনিসের জন্য পৃথক ফন্ট রাখতে, আরও বেশি font_path
এবং font_prop
ভেরিয়েবলের মতো লিখুন ।
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager
import matplotlib.ticker
# Workaround for Matplotlib 2.0.0 log axes bug https://github.com/matplotlib/matplotlib/issues/8017 :
matplotlib.ticker._mathdefault = lambda x: '\\mathdefault{%s}'%x
# Set the font properties (can use more variables for more fonts)
font_path = 'C:\Windows\Fonts\AGaramondPro-Regular.otf'
font_prop = font_manager.FontProperties(fname=font_path, size=14)
ax = plt.subplot() # Defines ax variable by creating an empty plot
# Define the data to be plotted
x = np.linspace(0, 10)
y = x + np.random.normal(x)
plt.plot(x, y, 'b+', label='Data points')
for label in (ax.get_xticklabels() + ax.get_yticklabels()):
label.set_fontproperties(font_prop)
label.set_fontsize(13) # Size here overrides font_prop
plt.title("Exponentially decaying oscillations", fontproperties=font_prop,
size=16, verticalalignment='bottom') # Size here overrides font_prop
plt.xlabel("Time", fontproperties=font_prop)
plt.ylabel("Amplitude", fontproperties=font_prop)
plt.text(0, 0, "Misc text", fontproperties=font_prop)
lgd = plt.legend(loc='lower right', prop=font_prop) # NB different 'prop' argument for legend
lgd.set_title("Legend", prop=font_prop)
plt.show()
আশা করি এটি একটি বিস্তৃত উত্তর