更新:2024/07/25
matplotlibで日本語の文字化けを解消する!UserWarning: Glyph xxxx (\N{KATAKANA LETTER KA}) missing from font(s) xxxx.


はるか
グラフが文字化けしてる….
目次
1. グラフのプロット
matplotlibを使用してカージオイドのグラフをプロットします。
import matplotlib.pyplot as plt
import numpy as np
def calc(a):
x,y = [],[]
for theta in np.linspace(0,2*np.pi,1000):
t_x = a * (1 + np.cos(theta)) * np.cos(theta)
t_y = a * (1 + np.cos(theta)) * np.sin(theta)
x.append(t_x)
y.append(t_y)
return x,y
x,y=calc(1)
plt.title("カージオイド")
plt.xlim(-1,3)
plt.ylim(-2,2)
plt.grid()
plt.plot(x,y)
plt.show()
このコードでは、カージオイド曲線を生成してプロットします。calc関数は、指定したパラメータaに基づいてカージオイドの点を計算します。thetaを0から2πまで分割し、それぞれのthetaに対してxとyの座標を計算します。その後、matplotlibを使用してプロットし、カージオイドの形状を視覚化します。

ふゅか
タイトルの文字がちゃんと表示されてないね。日本語フォントがないのかな?
1.1. カージオイド曲線とは
カージオイド曲線(カージオイド、英: cardioid)は、その形状が心臓に似ているためこの名前がつけられました。カージオイド曲線を媒介変数表示で表すと次のようになります。
\[ x= a(1 + \cos \theta) \cos \theta \]
\[ y= a(1 + \cos \theta) \sin \theta \]
このように、\(\theta\) を媒介変数とすることで、カージオイド曲線を直交座標系で表現することができます。
2. Pythonの解決策
2.1. japanize-matplotlibのインストール
japanize-matplotlibをインストールします。
pip install japanize-matplotlib
2.2. japanize_matplotlibのimport
japanize_matplotlibをimportします。
import japanize_matplotlib
元のカージオイドのコードに反映させると次のようになります。
import matplotlib.pyplot as plt
import japanize_matplotlib
import numpy as np
def calc(a):
x,y = [],[]
for theta in np.linspace(0,2*np.pi,1000):
t_x = a * (1 + np.cos(theta)) * np.cos(theta)
t_y = a * (1 + np.cos(theta)) * np.sin(theta)
x.append(t_x)
y.append(t_y)
return x,y
x,y=calc(1)
plt.title("カージオイド")
plt.xlim(-1,3)
plt.ylim(-2,2)
plt.grid()
plt.plot(x,y)
plt.show()

はるか
おー。解決できた。

ふゅか
これで日本語のタイトルもちゃんと表示されるようになったね♪
PR