Han*_*gzu 5 python fonts matplotlib
MatPlotLib 是一个很棒的图形包。但是当我有时需要用中文绘制数据集时。我发现了一些问题。
\n\n有两种使用 MatPlotLib 表示非英文字体的方法。
\n\n方法一
\n\nimport matplotlib as mpl\nmpl.rcParams[\'font.sans-serif\'] = [\'Microsoft YaHei\'] # YaHei is one common Chinese font\nmpl.rcParams[\'axes.unicode_minus\'] = False # Repair the bug of representing \'-\'as "square"\nRun Code Online (Sandbox Code Playgroud)\n\n采用这种方法,图中显示的所有文字和数字都是中文字体。
\n\n方法2
\n\n不同的是,我预先定义了一些中文字体的路径,并在需要使用时调用它。
\n\nfrom matplotlib.font_manager import FontProperties \nchinese = FontProperties(fname=r\'/Library/Fonts/Microsoft/SimHei.ttf\', size=20) \nax = plt.gca() \nax.set_title(u\'\xe8\x83\xbd\xe9\x87\x8f\xe9\x9a\x8f\xe6\x97\xb6\xe9\x97\xb4\xe7\x9a\x84\xe5\x8f\x98\xe5\x8c\x96\', fontproperties=chinese) \nRun Code Online (Sandbox Code Playgroud)\n\n当一个字符串同时包含中文和英文时(例如,中文作为变量,它应该带有一些单位:kg,m/s。)
\n\n\xe8\xb4\xa8\xe9\x87\x8f == Mass\nas.set_xlabel(u\'\xe8\xb4\xa8\xe9\x87\x8f\' + \'(kg)\') ==> Want to define their font sepearetly.\nRun Code Online (Sandbox Code Playgroud)\n\n那么,我希望字符串可以与中英文字体混合在一起作为一个单元吗?
\n\n有可能实现吗?
\n好的,我对方法一进行了一些尝试,结果证实了我的猜测。这是我的代码。
\n\nimport matplotlib\nmpl.use(\'pgf\') # stwich backend to pgf\nimport matplotlib.pyplot as plt\n plt.rcParams.update({\n "text.usetex": True,# use default xelatex\n "pgf.rcfonts": False,# turn off default matplotlib fonts properties\n "pgf.preamble": [\n r\'\\usepackage{fontspec}\',\n r\'\\setmainfont{Times New Roman}\',# EN fonts Romans\n r\'\\usepackage{xeCJK}\',# import xeCJK\n r\'\\setCJKmainfont{SimSun}\',# set CJK fonts as SimSun\n r\'\\xeCJKsetup{CJKecglue=}\',# turn off one space between CJK and EN fonts\n ]\n})\nplt.rcParams[\'savefig.dpi\']=300\nplt.figure(figsize=(4.5, 2.5))\nplt.plot(range(5))\nplt.text(2.5, 2., "\\CJKfontspec{SimHei}{\xe9\xbb\x91\xe4\xbd\x93\xe6\xa0\x87\xe6\xb3\xa8}")# Annotation by SimHei\nplt.xlabel("\xe5\xae\x8b\xe4\xbd\x93\xe5\x9d\x90\xe6\xa0\x87\xe6\xa0\x87\xe7\xad\xbe(units)")# CJK&EN fonts mixed\nplt.tight_layout(.5)\nplt.savefig(\'examples.png\')\nRun Code Online (Sandbox Code Playgroud)\n\n\n
| 归档时间: |
|
| 查看次数: |
3070 次 |
| 最近记录: |