更新: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