学习经验交流
1.问题来源
出自Python编程从入门到实践(第二版)第15章生成数据,276页
15.2.1 修改标签文字和线条粗细
原文代码为:
import matplotlib.pyplot as plt
squares = [1, 4, 9, 16, 25]
fig, ax = plt.subplots()
ax.plot(squares,linewidth=3)
# 设置图表标题并给坐标轴加上标签。
ax.set_title("平方数",fontsize=24)
ax.set_xlabel("值", fontsize=14)
ax.set_ylabel("值的平方", fontsize=14)
# 设置刻度标记的大小。
ax.tick_params(axis='both', labelsize=14)
plt.show()
我自己在运行后发现生成的图标,无法正常显示图例的中文标题,如图:
2.问题原因
经过网上资料查询,发现问题在于:书本展示的代码中设置了图表标题的属性,但没有设置中文字体,可能导致无法正常显示标题。
3.解决方法
通过以下方式,设置中文字体,解决了该问题,代码如下:
import matplotlib.pyplot as plt
#导入FontProperties模块,控制字体属性
from matplotlib.font_manager import FontProperties
#设置中文字体
font = FontProperties(fname = r"/System/Library/Fonts/PingFang.ttc", size=14)
squares = [1, 4, 9, 16, 25]
fig, ax = plt.subplots()
ax.plot(squares,linewidth=3)
# 设置图表标题并给坐标轴加上标签,指定字体对象。
ax.set_title("平方数",fontproperties=font, fontsize=24)
ax.set_xlabel("值",fontproperties=font, fontsize=14)
ax.set_ylabel("值的平方",fontproperties=font, fontsize=14)
# 设置刻度标记的大小。
ax.tick_params(axis='both', labelsize=14)
plt.show()
运行结果如图:
以上便是该问题的解决方案之一,相关代码还可以更简洁,感兴趣的可以在修改修改,也可以有其他的解决途径,遇到相似问题的小伙伴可以一起来交流指正哦。
网友评论