matplotlib を使用して中国語の文字を描画すると、「UserWarning: missing from current font」という問題が表示されます。

目次

1.中国語フォント表示の問題:

2. いくつかの解決策

2.1 描画コードでグローバルフォントを設定する

2.2 描画コードでローカルフォントを設定する

2.3 ネイティブ文字のデフォルト設定フォントを変更する


1.中国語フォント表示の問題:

C:\Users\86157\anaconda3\lib\site-packages\IPython\core\pylabtools.py:132: UserWarning: Glyph 26376 (\N{CJK UNIFIED IDEOGRAPH-6708}) が現在の font.fig.canvas.print_figure にありませ
  ん(bytes_io, **kw) 

matplotlib で描画する際、描画処理に中国語を使用するとデフォルトでフォントの警告が表示され、中国語の文字が枠で表示されたり、文字化けして表示されます。場合:
# 设置线宽
plt.figure(figsize=(10,4))
plt.plot(x, y, linewidth=4)
# 设置图表标题,并给坐标轴添加标签
plt.title("月份/成交额折线图", fontsize=12)
plt.xlabel("月份", fontsize=12)
plt.ylabel("成交额", fontsize=12)

plt.grid(True, linestyle='-', alpha=0.5)
# 设置坐标轴刻度标记的大小
plt.tick_params(axis='both', 
labelsize=12)
for a, b in zip(x, y):
    plt.text(a, b, b, ha='center', va='bottom', fontsize=10)

plt.show()
 
 

中国語が文字化けする: 

C:\Users\86157\anaconda3\lib\site-packages\IPython\core\pylabtools.py:132: UserWarning: Glyph 26376 (\N{CJK UNIFIED IDEOGRAPH-6708}) missing from current font.
  fig.canvas.print_figure(bytes_io, **kw)

警告メッセージには「現在のフォントにありません」というメッセージが表示されています。直訳すると「現在のフォントに (中国語の文字が) ありません」となっており、おそらくデフォルトのフォントに中国語の文字が含まれていないことを意味します。

この種の問題の核心は、使用する必要があるすべての文字が含まれるように絵を描くときにフォント パラメータを設定することです

2. いくつかの解決策

漢字表示の問題を解決する場合、解決策 1、描画コードでグローバル文字表示フォントを設定する、解決策 2、描画コードでローカル フォントを設定する、解決策 3、修正するという 2 種類の解決策と複数の方法があります。ローカル文字フォントのデフォルト設定。

2.1 描画コードでグローバルフォントを設定する

Python スクリプト内で matplotlibrc を動的に設定することで、設定ファイル変更によるトラブルも回避できます 具体的なコードは以下の通りです。

from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]

フォントを変更すると、座標軸の一部の文字が正常に表示されなくなる場合がありますので、axes.unicode_minus のパラメータを変更する必要があります。

# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

知らせ: 

rcParams は、 font.sans-serifまたはfont.familyに対応するフォントを変更します。

# 次のコードは、中国語の表示の問題を解決するためにフォントをグローバルに SimHei (黒体) に設定します [Windows] # font.sans-serif または font.family を
plt.rcParams['font.sans-serif'] = に
設定します['SimHei' ] 
# plt.rcParams['font.family']=['SimHei'] 
# 中国語フォントの負の座標軸の負の符号を表示する問題を解決する
plt.rcParams['axes.unicode_minus'] =間違い

Macコンピュータにはデフォルトでは SimHei (黑体) フォントがないため、のようにフォントをダウンロードしてインストールするか、 Arial Unicode MSなどのシステムに付属するフォントに変更できます。

# 次のコードは、中国語の表示の問題を解決するためにフォントを Arial Unicode MS にグローバルに設定します [mac] # font.sans-serif または font.family 
plt.rcParams['font.sans-serif'] =
を設定することが可能です['Arial Unicode MS '] 
# plt.rcParams['font.family']=['Arial Unicode MS'] 
# 中国語フォントの下に負の座標軸の負の符号が表示される問題を解決する
plt.rcParams['axes .unicode_minus'] = False

rcメソッドは基本的にrcParams の設定と同等です。

# フォント辞書を SimSun (Arial) に設定します。サイズは 12 (デフォルトは 10) 
font = {'family' : 'SimSun', 
        'size' : '12'} 
# フォントを設定します
plt.rc('font ', ** font) 
# 中国語フォントの負軸の負号表示問題を解決        
plt.rc('axes', unicode_minus=False)

!!例:rc('lines', linewidth=2, color='r')以下と同等:

rcParams['lines.linewidth'] = 2 
rcParams['lines.color'] = 'r'

 ケースの表示:

2.2 描画コードでローカルフォントを設定する

FontPropertiesオブジェクト。この場合、負符号を処理する必要はありません。

import matplotlib.pyplot as plt
import numpy as np
# 引入matplotlib字体管理 FontProperties
from matplotlib.font_manager import FontProperties

# 设置我们需要用到的中文字体(字体文件地址)
my_font = FontProperties(fname=r"c:\windows\fonts\SimHei.ttf", size=12)
# Data for plotting
t = np.arange(-1.0, 1.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)

plt.plot(t, s)

# 设置 x轴名称字体
plt.xlabel('时间 (s)', fontproperties=my_font)
plt.ylabel('voltage (mV)')
# 设置 标题字体
plt.title('简单的标题', fontproperties=my_font)

plt.show()

FontProperties オブジェクト

fontpropertiesパラメータを直接設定します。この場合、負符号の問題に対処する必要はありません。

import matplotlib.pyplot as plt
import numpy as np

# Data for plotting
t = np.arange(-1.0, 1.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)

plt.plot(t, s)

# 设置 x轴名称字体 黑体 SimHei
plt.xlabel('时间 (s)', fontproperties='SimHei')
plt.ylabel('voltage (mV)')
# 设置 标题字体 微软雅黑 Microsoft YaHei
plt.title('简单的标题', fontproperties='Microsoft YaHei')

plt.show()

2.3 ネイティブ文字のデフォルト設定フォントを変更する

コード内の上記のフォント設定に加えて、ローカル文字のデフォルト設定フォントを直接変更することもできますが、この場合、コードはローカル マシンにのみ適用されます。

  • ステップ 1: SimHei フォント (または中国語表示をサポートする他のフォント) をダウンロードします。
  • ステップ 2: フォントをインストールする
  • Windows および Mac の場合: ダブルクリックしてインストールします。
  • ステップ 3: 構成ファイル matplotlibrc を変更して、構成ファイルのパスを見つけます。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib

print(matplotlib.matplotlib_fname())  # 此处输出的就是配置文件的路径

ファイルを開いて表示します。

ファイルの内容を次のように変更します。

font.family: sans-serif
font.sans-serif: SimHei
axes.unicode_minus: False

#font.sans-serif中国語の文字をサポートするフォントを追加します( SimSun (宋体) など)。または#font.family: SimSunを直接変更します。

中国語フォントでのマイナス記号の表示の問題を考慮して、同期を修正する必要があります# axes.unicode_minus: False

 True を False に変更します

おすすめ

転載: blog.csdn.net/weixin_46474921/article/details/123783987