🇹🇼 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.git
The 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.folder
can benoto
(default) orcwtex
method
can belink
(default) orcopy
mpl_tc_fonts.set_font(font)
would set the givenfont
to 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 thelist
of avaiable fonts in the FontList ofmatlibplot
. The givenchar
is 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.