Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menghuraikan ralat biasa dan menyelesaikan masalah kacau Cina matplotlib

Menghuraikan ralat biasa dan menyelesaikan masalah kacau Cina matplotlib

PHPz
PHPzasal
2024-01-04 14:55:341086semak imbas

Menghuraikan ralat biasa dan menyelesaikan masalah kacau Cina matplotlib

Tajuk: Penjelasan terperinci tentang cara membetulkan ralat biasa aksara Cina yang kacau dalam matplotlib

Teks:

Apabila menggunakan Matplotlib untuk melukis carta, kami sering menghadapi masalah dengan aksara Cina yang kacau, seperti label, tajuk dan fon paparan dalam carta Salah. Masalah ini disebabkan terutamanya oleh fon lalai Matplotlib yang tidak menyokong aksara Cina. Dalam artikel ini, kami akan memperincikan beberapa kaedah biasa untuk membantu menyelesaikan masalah ini.

Kaedah 1: Ubah suai rcParams Matplotlib

Matplotlib menyediakan parameter rcParams yang boleh digunakan untuk menetapkan fon global. Kami boleh menentukan fon yang menyokong bahasa Cina dengan mengubah suai parameter ini.

Secara umumnya, kita boleh memilih fon Cina yang biasa digunakan, seperti SimHei, STsong, Microsoft YaHei, dsb. Sebelum mengubah suai rcParams, kita perlu menentukan laluan pemasangan fon ini dalam sistem. Anda boleh melihatnya dengan kod berikut:

import matplotlib.font_manager as fm
fonts = fm.fontManager.ttflist
for font in fonts:
    print(font.name, font.fname)

Pilih nama fon, seperti "SimHei", dan salin laluan penuhnya. Kemudian sebelum melukis carta, gunakan kod berikut untuk menetapkan parameter rcParams:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']

Kaedah 2: Gunakan fail fon tersuai

Jika tiada fon Cina yang sesuai dalam sistem, kami juga boleh memuat turun fail fon yang sepadan dan menambah ia ke direktori fon Matplotlib.

Mula-mula, muat turun fail fon daripada tapak web sumber yang sesuai, seperti "SimHei.ttf". Kemudian, cari direktori fon Matplotlib, yang boleh ditemui melalui kod berikut:

import matplotlib as mpl
print(mpl.get_cachedir())

Salin fail fon ke direktori ini, dan kemudian gunakan kod berikut untuk mendaftarkan fon tersuai sebelum melukis carta:

import matplotlib.font_manager as fm
fm.fontManager.addfont('/path/to/SimHei.ttf')

Seterusnya, tetapkan parameter rcParams Untuk menggunakan fon ini:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']

Kaedah 3: Gunakan fon sistem

Jika sudah ada fon Cina yang sesuai dalam sistem, kita boleh terus menggunakan fon sistem untuk melukis carta.

Mula-mula, semak fon yang dipasang pada sistem melalui kod berikut:

import matplotlib.font_manager as fm
fonts = fm.fontManager.ttflist
for font in fonts:
    print(font.name)

Pilih nama fon, seperti "Microsoft Yahei", dan kemudian sebelum melukis carta, gunakan kod berikut untuk menetapkan parameter rcParams:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['微软雅黑']

Dengan cara ini, anda boleh Gunakan fon sistem untuk memaparkan bahasa Cina secara normal.

Perlu diambil perhatian bahawa kaedah di atas mungkin berbeza sedikit pada sistem Mac dan Linux Keadaan khusus boleh dilaraskan mengikut sistem yang berbeza.

Selepas membetulkan masalah bercelaru bahasa Cina, kami boleh menggunakan aksara Cina dalam Matplotlib seperti biasa. Berikut ialah contoh kod mudah untuk melukis carta garisan dengan tajuk dan label Cina:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)

plt.title('中文标题')
plt.xlabel('横轴')
plt.ylabel('纵轴')

plt.show()

Dengan kaedah di atas, kami boleh menyelesaikan masalah aksara Cina yang kacau dalam Matplotlib dengan mudah dan menjadikan carta kami lebih cantik dan mudah dibaca. Pada masa yang sama, ia juga membolehkan kami menggunakan Matplotlib dengan lebih baik untuk kerja visualisasi data.

Atas ialah kandungan terperinci Menghuraikan ralat biasa dan menyelesaikan masalah kacau Cina matplotlib. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn