mac怎么解决matplotlib中文显示问题(使用mpl自带字体)

试用了网上的很多种方法,都均已失败告终,比如修改matplotlib里面的matplotlibrc文件的参数,修改好了之后,我发现我电脑上根本找不到fontlist.json文件,遂中止。

但其实matplotlib里面的自带字体是可以支持中文的。

步骤一:

可以通过以下代码来查看matplotlib支持的字体:

from matplotlib.font_manager import FontManager
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
for i in mat_fonts:
    print(i)
print(len(mat_fonts))  # 显示总共有多少种字体

 步骤二:

在步骤一的输出结果中去找一些可能会支持中文的字体,一般来说可以用拼音拼出来的基本上都能支持中文,另外注意Arial Unicode MS其实也是支持中文的。

# plt.rcParams['font.sans-serif'] = ['Heiti TC', 'Songti SC', 'Arial Unicode MS', 'PingFang HK', 'SimHei','FangSong_GB2312', 'Songti SC', 'KaiTi']
plt.rcParams['font.sans-serif'] = ['SimHei']

第一行注释掉的相当于一个容器,我把可能会支持中文的字体都装里面了,方便自己一个一个去试。

第二行代码就是真正使用的字体了,这里我使用的是SimHei字体,经过调试可以发现是支持中文的

经过测试我发现以下这些这些字体都是支持的

plt.rcParams['font.sans-serif'] = ['Heiti TC']

plt.rcParams['font.sans-serif'] = ['Songti SC']

plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']

plt.rcParams['font.sans-serif'] = ['PingFang HK']

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['font.sans-serif'] = ['FangSong_GB2312']

plt.rcParams['font.sans-serif'] = ['KaiTi']

并且在最后尝试‘KaiTi’字体时发现,程序运行时仍然会报错,于是我下载了KaiTi,安装在了matplotlib/mpl-data/fonts/ttf文件里面,把pycharm退出再重新运行一次就成功了

附:matplotlib支持的所有字体

['cmsy10', 'InaiMathi', 'Noto Sans Tai Tham', 'DejaVu Sans Mono', 'Noto Sans Tai Viet', 'Mshtakan', 'PT Sans', 'Monaco', 'STIXIntegralsD', 'Noto Sans Khojki', 'Microsoft Sans Serif', 'Noto Sans PhagsPa', 'Noto Sans Batak', 'Noto Sans Siddham', 'Noto Sans Mongolian', 'STIXSizeTwoSym', 'Noto Sans Samaritan', 'cmr10', 'Bradley Hand', 'Noto Sans Brahmi', 'Copperplate', 'Noto Sans Miao', 'Baskerville', 'Didot', 'Menlo', 'Farah', 'Palatino', 'Noto Sans Kannada', 'Lao MN', 'New Peninim MT', 'Wingdings', 'Noto Sans Avestan', 'Al Nile', 'Silom', 'Hiragino Maru Gothic Pro', 'Malayalam MN', 'Courier', 'Noto Sans Inscriptional Pahlavi', 'Mukta Mahee', 'Beirut', 'Arial Black', 'Noto Sans Sora Sompeng', 'Noto Sans Sundanese', 'Myanmar MN', 'Lucida Grande', '.Keyboard', 'Noto Sans Old South Arabian', 'Hoefler Text', 'Noto Sans Old Hungarian', 'Noto Sans Elbasan', 'DecoType Naskh', 'Gill Sans', 'Noto Sans Tai Le', 'Khmer MN', 'FangSong_GB2312', 'Apple Braille', 'Courier New', 'Helvetica', 'Devanagari Sangam MN', 'Times New Roman', 'Diwan Kufi', 'Noto Nastaliq Urdu', 'Arial Hebrew', 'Noto Sans Chakma', 'Noto Sans Bhaiksuki', 'Noto Sans Inscriptional Parthian', 'Chalkboard SE', 'Noto Sans Lisu', 'Avenir Next Condensed', 'Oriya Sangam MN', 'Kohinoor Telugu', 'Bodoni Ornaments', 'Zapf Dingbats', 'Noto Sans Newa', 'Noto Sans Vai', 'Noto Serif Balinese', 'Kannada MN', 'Chalkduster', 'Noto Sans Adlam', '.SF Compact Rounded', 'Charter', 'Songti SC', 'Noto Sans Oriya', 'Noto Sans Mro', 'Telugu MN', 'Al Tarikh', 'Noto Sans Rejang', 'Kohinoor Devanagari', 'Arial', 'Noto Sans NKo', 'Apple Chancery', 'Noto Sans Tirhuta', 'STIXSizeOneSym', '201-SSQueQiaoTi', 'Noto Sans Hatran', 'Savoye LET', 'Noto Sans Cuneiform', 'Myanmar Sangam MN', 'STIXIntegralsUp', 'Geneva', 'Krungthep', 'Noto Sans Takri', 'Bodoni 72 Smallcaps', 'Noto Sans Carian', 'Noto Sans Sharada', 'DIN Condensed', 'Noto Sans Khudawadi', 'Noto Sans Hanunoo', 'American Typewriter', 'SignPainter', 'STIXIntegralsSm', 'Noto Sans Saurashtra', 'Bangla MN', 'Zapfino', 'Noto Sans Imperial Aramaic', 'Arial Rounded MT Bold', 'Noto Serif Ahom', 'DIN Alternate', 'Noto Sans Mandaic', 'Noto Sans Kharoshthi', 'Sana', 'Thonburi', 'Plantagenet Cherokee', 'PingFang HK', 'Noto Sans Limbu', 'Noto Sans Kayah Li', 'Avenir Next', 'cmmi10', 'STIXIntegralsUpSm', 'Noto Sans Myanmar', 'Noto Sans Hanifi Rohingya', 'Noto Sans New Tai Lue', 'Noto Sans Multani', 'Athelas', 'Comic Sans MS', 'Noto Sans Mende Kikakui', 'Helvetica Neue', 'Kannada Sangam MN', 'Sathu', 'Noto Serif Yezidi', 'Avenir', 'Sinhala Sangam MN', 'Sinhala MN', 'ITF Devanagari', 'Bodoni 72', 'Andale Mono', 'Chalkboard', 'Noto Sans Caucasian Albanian', 'Noto Sans Tagalog', 'STIXSizeFourSym', 'Bangla Sangam MN', 'Diwan Thuluth', 'STIXNonUnicode', 'Sukhumvit Set', 'Noto Sans Tagbanwa', 'Lao Sangam MN', 'Telugu Sangam MN', 'Noto Sans Lepcha', 'Farisi', 'Tamil Sangam MN', 'Marion', 'Noto Sans Javanese', 'Arial Unicode MS', 'Noto Sans Old Persian', 'STIXGeneral', 'Noto Sans Palmyrene', 'Hiragino Mincho ProN', 'Noto Sans Modi', 'STIXSizeThreeSym', 'KaiTi', 'AppleMyungjo', 'Noto Sans Bassa Vah', 'Party LET', 'Noto Sans Glagolitic', 'Kailasa', 'Futura', 'Noto Sans Old Italic', 'Devanagari MT', 'Noto Sans Old North Arabian', 'Khmer Sangam MN', 'Kohinoor Bangla', 'Nadeem', 'Kohinoor Gujarati', 'Skia', 'cmb10', 'Verdana', 'Noto Sans Ol Chiki', 'Waseem', 'Shree Devanagari 714', 'Damascus', 'Noto Sans Warang Citi', 'Cochin', 'Noto Sans Masaram Gondi', 'Times', 'Noto Sans Marchen', 'Gujarati Sangam MN', 'Noto Sans Yi', 'Noto Sans Phoenician', 'Ayuthaya', 'Muna', 'Heiti TC', 'Optima', 'Hiragino Sans', 'Noto Sans Ugaritic', 'STIXVariants', 'Marker Felt', 'Herculanum', 'Noto Sans Lycian', 'PT Serif Caption', 'Tamil MN', 'Luminari', 'Academy Engraved LET', 'Mishafi Gold', 'Kefa', 'Superclarendon', 'Snell Roundhand', 'Noto Sans Linear B', 'Noto Sans Gunjala Gondi', 'Big Caslon', 'Oriya MN', 'Impact', 'STIXSizeFiveSym', 'Hiragino Sans GB', 'Gurmukhi MT', 'Webdings', 'AppleGothic', 'Mishafi', 'Noto Sans Meroitic', 'Noto Sans Buginese', 'Gurmukhi Sangam MN', 'Apple SD Gothic Neo', 'Gujarati MT', 'Noto Sans Osmanya', 'Noto Sans Kaithi', 'Al Bayan', 'Noto Sans Armenian', 'Geeza Pro', '.SF NS Rounded', 'Euphemia UCAS', 'Kokonor', 'Symbol', '.Aqua Kana', 'Georgia', 'Brush Script MT', '.New York', 'Noto Sans Psalter Pahlavi', 'Noto Sans Old Permic', 'Noto Sans Gothic', 'Noto Sans Buhid', 'Tahoma', 'Raanana', 'Noto Sans Mahajani', 'Noto Sans Cham', 'Noto Sans Syriac', 'Noto Sans Manichaean', 'cmtt10', 'Noto Sans Egyptian Hieroglyphs', 'Corsiva Hebrew', 'STIXIntegralsUpD', 'DejaVu Serif', 'Noto Sans Old Turkic', 'Noto Sans Meetei Mayek', 'DejaVu Sans Display', 'Noto Sans Thaana', 'Noto Sans Syloti Nagri', 'Noto Sans Coptic', 'Gurmukhi MN', '.SF Arabic', '.SF NS Mono', 'Galvji', 'Baghdad', 'Noto Sans Wancho', 'System Font', 'Trebuchet MS', 'Noto Sans Duployan', 'Noto Sans Bamum', 'Arial Narrow', 'Noto Serif Myanmar', 'Noto Sans Nabataean', 'Wingdings 2', 'Seravek', 'Bodoni 72 Oldstyle', 'SimHei', 'PT Mono', '.SF Compact', 'Noteworthy', 'Rockwell', 'Noto Sans Osage', 'cmss10', 'Noto Sans Pahawh Hmong', 'Iowan Old Style', 'cmex10', 'Apple Symbols', 'Noto Sans Linear A', 'PT Serif', 'Noto Sans Tifinagh', 'Trattatello', 'Noto Sans Pau Cin Hau', 'Malayalam Sangam MN', 'Wingdings 3', 'DejaVu Sans', 'Noto Sans Cypriot', 'Papyrus', 'DejaVu Serif Display', 'Noto Sans Lydian', 'KufiStandardGK', 'Phosphate']

你可能感兴趣的:(matplotlib,macos,python)