🇹🇼 A package to solve the problem of "Tofu" in your matplotlib plots whenever you're trying to use Traditional Chinese characters in labels or texts.
Install mpl-tc-fonts with pip:
# Install from GitHub Repository for latest commit
$ pip install git+https://github.com/Hsins/mpl-tc-fonts.gitThe package installer pip will install this package from the
mpl-tc-fonts repository to your local python environment. Please see the FAQ section for more information and troubleshooting.
The easiest way to use this package is just import the package after installation. It links the fonts inside package folder to the matplotlib font manager and the Traditional Chinese characters will be properly displayed in your plots.
import matplotlib.pyplot as plt
import mpl_tc_fonts
names = ['分類 A', '分類 B', '分類 C']
values = [1, 10, 100]
plt.figure(figsize=(9, 3))
plt.subplot(131)
plt.bar(names, values)
plt.subplot(132)
plt.scatter(names, values)
plt.subplot(133)
plt.plot(names, values)
plt.suptitle('分類資料圖')
plt.show()[NOTE] The default font would set to be 思源宋體(Noto Serif CJK TC).
import mpl_tc_fonts
# Copy the cwTeX fonts into matplotlib folder
font_tool.load_font('cwtex', 'copy')
# Set "cwTeX Q Kai" to be the display font
font_tool.set_font('cwTeX Q Kai')
# Print out current font in use
font_tool.show_font_setting()
# Print out the list of the avaiable font-family name
print(font_tool.scan_font('國'))There are some functions to help users qucik setup the fonts:
mpl_tc_fonts.load_font(folder, method)would install the given fonts.foldercan benoto(default) orcwtexmethodcan belink(default) orcopy
mpl_tc_fonts.set_font(font)would set the givenfontto display the texts. There are 7 different fonts in this package.Noto Sans CJK TC: 思源黑體Noto Serif CJK TC: 思源宋體cwTeX Q Ming: cwTeX 中明體cwTeX Q Kai: cwTeX 中楷體cwTeX Q Yuan: cwTeX 中圓體cwTeX Q Fangsong: cwTeX 仿宋體cwTeX Q Hei: cwTeX 粗黑體
mpl_tc_fonts.scan_font(char)return thelistof avaiable fonts in the FontList ofmatlibplot. The givencharis used to check whether glyph could be found in that font or not.mpl_tc_fonts.show_font_setting()print out current font in use.
[ Q ] What's the difference between copy and link options in the load_font() method?
TBD
Licensed under the GPL-3.0 License, Copyright © 2020-present Hsins.
