首页 > 解决方案 > 让matplotlib的ylabel垂直显示CJK文本

问题描述

我正在尝试使用matplotlibCJK(尤其是日语)制作带有标签的情节。由于 CJK 可以垂直书写,我希望ylabel以这种方式书写。我在下面找到了一种方法,但它需要填充每个字符\n以创建所需的效果。但是,这是hackey。

有没有更好的方法,例如,将每个字符旋转 90 度?

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Make a plot with Japanese labels.
"""

import matplotlib.pyplot as plt
from matplotlib import font_manager as fm

# Set fonts so that labels display correctly.
pathToInstall = '/path/to/fonts'
fontFiles = fm.findSystemFonts(pathToInstall)
fontList = fm.createFontList(fontFiles)
fm.fontManager.ttflist.extend(fontList)
fp = fm.FontProperties()
fp.set_family('Noto Sans Mono CJK JP')

fig = plt.figure()
fig.suptitle('こんにちは、世界さん!', FontProperties=fp) # Fine

plt.xlabel('アイウエオ', FontProperties=fp) # Fine
plt.ylabel(
    'あ\nい\nう\nえ\nお', # How can I avoid padding each character with \n?
    FontProperties = fp,
    rotation = 'horizontal',
    verticalalignment = 'center',
    horizontalalignment = 'right'
)

plt.show()

绘图显示上述代码的输出。

标签: pythonmatplotliblocalizationcjk

解决方案


推荐阅读