matplotlib中中文不显示问题

matplotlib中中文不显示问题

windows与linux解决方法如下

import matplotlib

font = {'family': 'MicroSoft YaHei',
        'weight': 'bold'}
matplotlib.rc('font', **font)
# matplotlib.rc('font', family='MicroSoft YaHei', weight='bold')
# 这种设置参数的方式与上面**设置参数方式相同

windows、linux、mac解决方法如下

from matplotlib import font_manager
# 实例化一个字体
my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/AdobeHeitiStd-Regular.otf')
# fname 指定字体的路径,windows环境下可直接搜索字体,选择对应字体复制路径
# ......
# 在使用字体的地方加上fontproperties属性
plt.xticks(list(x)[::3], _xticks_labels[::3], rotation=45, fontproperties=my_font)  

一个简单曲线图的示例

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

# font = {'family': 'MicroSoft YaHei',
#         'weight': 'bold'}
# matplotlib.rc('font', **font)
# # matplotlib.rc('font', family='MicroSoft YaHei', weight='bold')
# # 这种设置参数的方式与上面**设置参数方式相同


# 实例化一个字体
my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/AdobeHeitiStd-Regular.otf')

x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]


# 设置图片大小
fig = plt.figure(figsize=(20,8),dpi=80)

# 绘图
plt.plot(x, y, label="温度", linestyle='--')		# linestyle设置线条样式

# 设置x轴的刻度
_xticks_labels = ["10点{}分".format(i) for i in range(60)]
_xticks_labels += ["11点{}分".format(i) for i in range(60)]

# 取步长,数字和字符串要一一对应
plt.xticks(list(x)[::3], _xticks_labels[::3], rotation=45, fontproperties=my_font)  # 使用字体
plt.yticks(range(20, 36))

# 添加描述信息
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度", fontproperties=my_font)
plt.title("10点到12点每分钟温度变化情况", fontproperties=my_font)


# 设置网格线
plt.grid(alpha=0.4)

# 设置图例
plt.legend(prop=my_font)

plt.show()

参考视频:数据分析matplotlib折线图

一个简单散点图示例

from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname='C:/Windows/Fonts/AdobeHeitiStd-Regular.otf')

a = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22,
     23]
b = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12,
     13, 6]

x1 = range(1, 32)
x2 = range(51, 82)

fig = plt.figure(figsize=(20,8), dpi=80)

plt.scatter(x1, a, label='3月气温')
plt.scatter(x2, b, label='10月气温')

_xticks_labels = ["3月{}日".format(i) for i in x1]
_xticks_labels += ["10月{}日".format(i-50) for i in x2]

x = list(x1) + list(x2)
plt.xticks(x[::3], _xticks_labels[::3], rotation=45, fontproperties=my_font)
plt.yticks(range(min(a + b), max(a + b) + 1))

plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度", fontproperties=my_font)

plt.grid(alpha=0.4)
plt.legend(prop=my_font)

plt.show()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值