python数据分析--Matplotlib解决乱码问题(3种方法)

数据分析–解决常见的字体乱码问题

一.设置字体两种模式(全局和局部)

1.全局模式

# 设置字体 --> 全局

# 方法一:
plt.rcParams['font.sans-serif'] = ['SimHei']

# 方法二:
'''
import matplotlib # 使用此方法需要导入的库

源码中的方法说明:
font rc as follows::

  font = {'family' : 'monospace',
          'weight' : 'bold',
          'size'   : 'larger'}
  rc('font', **font)  # pass in the font dict as kwargs

'''
font = {
    'family':'SimHei',
    'weight':'bold',
    'size':12,
}

matplotlib.rc("font",**font)



2.局部模式

windows系统字体的存放位置:C:\Windows\Fonts
查看字体格式:右击–属性–文件类型

python数据分析--Matplotlib解决乱码问题(3种方法)_第1张图片


# 设置字体 --> 局部
'''
from matplotlib.font_manager import FontProperties  # 使用此方法需要导入的模块

# 这种设置字体的方法,其优点是:1.支持ttc格式和ttf格式等格式(全局模式只支持ttf格式);2.在一个图形上可以使用多种字体;3.不用担心因字体格式导致某些符号乱码

导入字体后要在每个方法后调用指定字体,如:
plt.title('天气变化图',fontsize=30,color='b',fontproperties=font) # 设置标题

plt.xlabel('时间',fontsize=20,color='cyan',fontproperties=font)   # 设置x轴标签
plt.ylabel('温度',fontsize=20,color='cyan',fontproperties=font)   # 设置y轴标签
....

简单来说就是哪里有中文哪里就在哪里调用导入的字体 -->  fontproperties=font

'''

font = FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc",)   # 导入字体(还可以导入多个font)
# 注:导入的字体必须带上后缀(如:simsun.ttc),不然会出错。属性中可以查看


二.代码实现

  • 通过一个实例来,来探讨解决中文乱码的问题
  • 注:本实验最后使用的是局部模式设置字体
  • 注:设置字体使用全局模式,不要加 --> fontproperties=font
# @Author  : Keep
# @File    : 设置字体.py

# 绘制10点到12点的气温变化图,观察每10分钟的气温变化,温度可随机获取

from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib.font_manager import FontProperties

# 设置字体 --> 全局

# 方法一:
# plt.rcParams['font.sans-serif'] = ['SimHei']

# 方法二:
'''
import matplotlib # 使用此方法需要导入的库

源码中的方法说明:
font rc as follows::

  font = {'family' : 'monospace',
          'weight' : 'bold',
          'size'   : 'larger'}
  rc('font', **font)  # pass in the font dict as kwargs

'''
# font = {
#     'family':'SimHei',
#     'weight':'bold',
#     'size':12,
# }
#
# matplotlib.rc("font",**font)




# 设置字体 --> 局部
'''
from matplotlib.font_manager import FontProperties  # 使用此方法需要导入的模块

# 这种设置字体的方法,其优点是:1.支持ttc格式和ttf格式等格式(全局模式只支持ttf格式);2.在一个图形上可以使用多种字体;3.不用担心因字体格式导致某些符号乱码

导入字体后要在每个方法后调用指定字体,如:
plt.title('天气变化图',fontsize=30,color='b',fontproperties=font) # 设置标题

plt.xlabel('时间',fontsize=20,color='cyan',fontproperties=font)   # 设置x轴标签
plt.ylabel('温度',fontsize=20,color='cyan',fontproperties=font)   # 设置y轴标签
....

简单来说就是哪里有中文哪里就在哪里调用导入的字体 -->  fontproperties=font

'''

font = FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc",)   # 导入字体(还可以导入多个font)



# 设置画布
plt.figure(figsize=(15,8),dpi=80)

# 绘图
plt.plot([random.randint(20,35) for i in range(120)],color='g',label='气温变化图')


# 设置标题
plt.title('天气变化图',fontsize=30,color='b',fontproperties=font)

# 设置刻度
'''
刻度格式:
x_10 = 十点1分  十点2分  十点3分  十点4分  ...
x_11 = 十一点1分  十一点2分  十一点3分  十一点4分  ...

'''

x_tick = range(0,120,10)
x_lis = [f"十点{i}分" for i in range(0,60,10)]
x_lis += [f"十一点{i}分" for i in range(0,60,10)]

'''
# 上面方法的简化版:
x_tick = range(0,120,10)
x_10 = [f"十点{i}分" for i in range(0,60,10)]
x_11 = [f"十一点{i}分" for i in range(0,60,10)]
x_lis = x_10 + x_11

'''


plt.xticks(x_tick,x_lis,rotation=45,color='r',fontproperties=font)
plt.yticks(range(19,40),range(19,40),color='r',fontproperties=font)

# 设置标签
plt.xlabel('时间',fontsize=20,color='cyan',fontproperties=font)
plt.ylabel('温度',fontsize=20,color='cyan',fontproperties=font)


# 设置图例
plt.legend(fontsize=15,prop=font)

# 展示
plt.show()


你可能感兴趣的:(python数据分析,python,数据分析)