plt.legend(color_patches, ['城市', '混合城市', '混合乡村', '乡村'], loc='upper right'),中文乱码
时间: 2023-08-09 10:05:03 浏览: 180
如果您在图例中使用中文出现了乱码,这可能是因为 Matplotlib 默认使用的字体不支持中文字符。您可以通过设置中文字体来解决这个问题。以下是一种解决方案:
1. 下载一个支持中文字符的字体文件,例如 `SimHei.ttf`。
2. 将字体文件复制到系统字体目录下。您可以使用以下代码查找系统字体目录:
```
import matplotlib.font_manager as fm
print(fm.get_fontconfig_fonts())
```
3. 在代码中指定要使用的字体,例如:
```
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import numpy as np
# 指定要使用的字体
font = fm.FontProperties(fname='/path/to/SimHei.ttf')
# 生成数据
data = [np.random.normal(0, 1, size=100) for _ in range(4)]
# 绘制箱线图
bp = plt.boxplot(data, patch_artist=True)
# 设置箱子颜色
colors = ['red', 'green', 'blue', 'orange']
for box, color in zip(bp['boxes'], colors):
box.set(facecolor=color)
# 添加颜色的图例
color_patches = [plt.Rectangle((0, 0), 1, 1, fc=color) for color in colors]
plt.legend(color_patches, ['城市', '混合城市', '混合乡村', '乡村'], loc='upper right', prop=font)
plt.show()
```
在这个例子中,我们使用了 `fm.FontProperties()` 方法指定要使用的字体文件路径,并将其作为 `prop` 参数传递给 `plt.legend()` 方法。请注意,您需要将 `/path/to/SimHei.ttf` 替换为您系统中实际的字体文件路径。
阅读全文