ম্যাটপ্লোটিলেব (অজগর) ফন্টগুলি কীভাবে পরিবর্তন করবেন?


89

এটি একটি সহজ সমস্যা হিসাবে মনে হচ্ছে তবে পাইথনের ম্যাটপ্ল্লোলিব দিয়ে তৈরি প্লটটিতে ফন্টটি (ফন্টের আকার নয়) পরিবর্তন করার কোনও কার্যকর সমাধান আমি পাই না।

আমি ম্যাটপ্লটলিবের ডিফল্ট ফন্টটি পরিবর্তিত করে ম্যাটপ্লটলিবের ডিফল্ট ফন্টটি সংরক্ষণ করে কিছু ব্লগ পোস্টটি দেখতে পেয়েছি - এই ব্লগ পোস্টটি দেখুন - তবে আমি একটি কম মৌলিক সমাধান খুঁজছি যেহেতু আমি একাধিক ব্যবহার করতে চাই আমার চক্রান্তের ফন্ট (পাঠ্য, লেবেল, অক্ষ লেবেল, ইত্যাদি)।


খুশী হ'ল :) আপনি কি এই কোডটি পোস্ট করতে পারেন যা এই ত্রুটির কারণ ঘটায়? আমি নিজেই এই ত্রুটিটি দেখিনি তবে এখানে কয়েকটি লিঙ্ক যা আপনাকে সহায়তা করতে পারে। matplotlib.1069221.n5.nabble.com/... matplotlib.1069221.n5.nabble.com/Fonts-not-found-td12936.html
aidnani8

কোডটি যে সমস্যাটি উত্পন্ন করে তা হ'ল: hfont = {'fontname':'Helvetica'} plt.annotate('Country ', (0.17,0.95), xytext=None, xycoords='figure fraction',size=28, color='red', horizontalalignment = 'left', **hfont)এবং ত্রুটিটি এর /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/m‌​atplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Helvetica'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))পরিবর্তে যদি আমি হ'ল ফন্টনাম কমিক সান এমএস হিসাবে আপনার উদাহরণ হিসাবে ব্যবহার করি তবে কোডটি কাজ করে।
সিরক

উত্তর:


103

বলুন যে আপনি শিরোনামের জন্য কমিক সানস এবং এক্স লেবেলের জন্য হেলভেটিকা ​​চান।

csfont = {'fontname':'Comic Sans MS'}
hfont = {'fontname':'Helvetica'}

plt.title('title',**csfont)
plt.xlabel('xlabel', **hfont)
plt.show()

4
আমি চেষ্টা করেছি এবং এটি কাজ করে! আমি ঠিক এটিই খুঁজছিলাম। যাইহোক, কিছু ফন্ট আমি নিম্নলিখিত ত্রুটির বার্তা (না সব জন্য) আছে: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Helvetica'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))। ম্যাটপ্লোটিলিব দ্বারা পরিচিত ফন্টের সেটে আমি কীভাবে হেলভেটিকা ​​ইনস্টল করতে পারি?
স্যারসি 24'14

4
হ'ল ফন্টলিস্ট.ক্যাচ ফাইলটি সন্ধান করুন, আপনি কেবল সেখানে তালিকাবদ্ধ তালিকা ব্যবহার করতে পারেন। বিকল্পভাবে কটাক্ষপাত এখানে নেওয়া stackoverflow.com/questions/20206906/...
B.Kocis

4
উপরের মন্তব্য উপর অনুসরণ। আপনার ফন্টলিস্টকাচি ফাইলটি খুঁজে পেতে matplotlib.get_cachedir ()
সিএস

51

আপনি rcParamsবিশ্বব্যাপী ফন্ট পরিবার পরিবর্তন করতে ব্যবহার করতে পারেন ।

 import matplotlib.pyplot as plt
 plt.rcParams["font.family"] = "cursive"
 # This will change to your computer's default cursive font

ম্যাটপ্ল্লোলিবের ফন্ট পরিবারের আর্গুমেন্টগুলির তালিকা এখানে


23

আমি নিয়োগ করতে পছন্দ করি:

from matplotlib import rc
#rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
rc('font',**{'family':'serif','serif':['Times']})
rc('text', usetex=True)

বিশ্বব্যাপী ফন্টটি পরিবর্তন করার দুর্দান্ত উপায়, আমি এটি খুঁজছিলাম। টেক্স এর সাথে কী করবে তা নিশ্চিত নন, শেষ লাইনটি প্রয়োজনীয় নয়। যদি আপনি একটি ত্রুটি পান কারণ আপনি যে ফন্টটি চান তা ম্যাটপ্ল্লোলিবের দ্বারা পাওয়া যায় নি, এই লিঙ্কটিটি দেখুন
এসএমসি

7
import pylab as plb
plb.rcParams['font.size'] = 12

বা

import matplotlib.pyplot as mpl
mpl.rcParams['font.size'] = 12

9
অবিশ্বাস্যভাবে যথেষ্ট এটি হ'ল আদেশটি আমি সন্ধান করছি। অবশ্যই ওপি যা জিজ্ঞাসা করছিল তা নয়
নীল

2

হেলভেটিকা ​​ফন্টটি উইন্ডোজের সাথে অন্তর্ভুক্ত হয় না, সুতরাং এটি ব্যবহারের জন্য আপনাকে এটি অবশ্যই একটি .ttf ফাইল হিসাবে ডাউনলোড করতে হবে। তারপরে আপনি ম্যাটপ্ল্লিটিবকে এটির মতো উল্লেখ করতে পারেন (আপনার ফাইলের সাথে "crm10.ttf" প্রতিস্থাপন করুন):

import os
from matplotlib import font_manager as fm, rcParams
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

fpath = os.path.join(rcParams["datapath"], "fonts/ttf/cmr10.ttf")
prop = fm.FontProperties(fname=fpath)
fname = os.path.split(fpath)[1]
ax.set_title('This is a special font: {}'.format(fname), fontproperties=prop)
ax.set_xlabel('This is the default font')

plt.show()

print(fpath) আপনাকে কোথায় প্রদর্শিত হবে তা আপনাকে দেখাবে।

আপনি আউটপুটটি এখানে দেখতে পারেন: https://matplotlib.org/gallery/api/font_file.html


সেখানে সেট করতে কোন উপায় আছে কি fontpropertiesবিশ্বব্যাপী যাতে আপনি যেমন প্রতি কলের মাধ্যমে এটা উল্লেখ করতে হবে না set_title(), set_xlabel()ইত্যাদি?
কাইল মিলস

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.