在使用matplotlib.font_manager根据csv表格绘图时,表里面的中文显示为方块
时间: 2024-01-21 15:20:07 浏览: 139
这个问题通常是因为matplotlib默认的字体不支持中文字符所致。你可以通过以下方式解决:
1. 安装支持中文字符的字体,比如SimHei、Microsoft YaHei等,这些字体可以在Windows系统自带的字体库中找到。
2. 在代码中指定使用支持中文字符的字体。可以使用以下代码:
```
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='/path/to/font.ttf', size=12)
plt.rcParams['font.family'] = font.get_name()
```
其中,`/path/to/font.ttf`是你安装的字体文件的路径。
3. 将中文字符转换为Unicode编码。你可以使用Python的`unicodedata`模块将中文字符转换为Unicode编码,然后在绘图时使用Unicode编码表示中文字符。例如:
```
import csv
import matplotlib.pyplot as plt
import unicodedata
data = []
with open('data.csv', newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
data.append([row[0], float(row[1])])
x = [unicodedata.normalize('NFKC', d[0]) for d in data]
y = [d[1] for d in data]
plt.plot(x, y)
plt.show()
```
其中,`unicodedata.normalize('NFKC', d[0])`将中文字符转换为Unicode编码。
阅读全文