python学习之图表坐标系中文显示

pythonMatplotlib 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。

在程序开始的地方导入库

一、基础绘图

from matplotlib import pyplot as plt

利用plt.plot(x,y)即可绘图,

plt.savefig("存储位置\fig.png")  #将图保存到目录中

plt.show()   #在plot窗口中显示图表

但是,我们不满足于简单的表格,希望可以定义表格横纵坐标轴刻度,图表题目等,在编辑过程中,我们发现不能正常生成中文刻度,显示为一个小方块,那么应该如何解决呢?

python学习之图表坐标系中文显示_第1张图片

1、首先导入matplotlib中的字体的库

from matplotlib import font_manager

2、定义一个my_font

my_font = font_manager.FontProperties(fname=(r'C:\Windows\Fonts\simhei.ttf'))

注意此处的路径是你电脑中的字体位置,可能与我这个路径相同,大差不差就是这个位置

3、在设置x轴刻度的函数中加上该参数,黄色部分

plt.xticks(_x[::20],_x_label[::20],rotation=45,FontProperties=my_font)

python学习之图表坐标系中文显示_第2张图片

就成功了

下一个问题,添加横纵坐标轴描述信息

plt.xlabel("时间")   #横坐标描述信息
plt.ylabel("温度 单位(摄氏度)")  #纵坐标描述信息
plt.title("10点到12点每分钟气温变化情况")    #图表题目

python学习之图表坐标系中文显示_第3张图片

 二、应用实例

# -*- coding: utf-8 -*-
"""
Created on Wed Nov  2 19:13:46 2022

@author: 82089
"""
"""
一个小练习
假设在30岁统计11岁-30岁谈的女朋友数量 
如列表a,绘制折线图,分析走势
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
要求:y轴表示个数,x轴表示岁数
"""

#导入绘图库
from matplotlib import pyplot as plt
from matplotlib import font_manager

#定义x,y的数值,这里注意x与y的数量必须一致
x = list(range(11,31)) 
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

#设置中文字体
my_font = font_manager.FontProperties(fname=(r'C:\Windows\Fonts\simhei.ttf'))

#添加x,y轴,标题等信息
x_label = ["{}岁".format(i) for i in x]
plt.xticks(x[::2],x_label[::2],FontProperties=my_font) 
plt.xlabel("年龄")
plt.ylabel("个数")
plt.title("11岁到30岁女朋友数量变化图")

#绘图
plt.plot(x, y)
#保存至当前目录
plt.savefig("./ti1.png")

#添加网格
plt.grid()
#显示
plt.show() 

运行结果

​​​​​​​python学习之图表坐标系中文显示_第4张图片

 三、升级版应用实例

# -*- coding: utf-8 -*-
"""
Created on Wed Nov  2 19:45:31 2022

@author: 82089
"""
"""
增强小练习
假设在30岁统计11岁-30岁你和你同桌两个人谈的女朋友数量 
如列表a,绘制折线图,分析走势
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
要求:y1轴表示你的数据,y2表示你同桌的数据,x轴表示岁数
"""

#导入绘图库
from matplotlib import pyplot as plt
from matplotlib import font_manager

#定义x,y1,y2的数值,这里注意x与y的数量必须一致
x = list(range(11,31)) 
y1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
#设置中文字体
my_font = font_manager.FontProperties(fname=(r'C:\Windows\Fonts\simhei.ttf'))

#添加x,y1轴,标题等信息
x_label = ["{}岁".format(i) for i in x]
plt.xticks(x[::2],x_label[::2],FontProperties=my_font) 
plt.xlabel("年龄")
plt.ylabel("个数")
plt.title("11岁到30岁女朋友数量变化图")

#绘图
plt.plot(x, y1, label='自己', color = 'pink', linestyle = '-.')
plt.plot(x, y2, label='同桌', color = 'cyan', linestyle = ':')

#保存至当前目录
#plt.savefig("./ti1.png")

#添加网格
plt.grid(alpha=0.4, linestyle=':')  #透明度 

#添加图例  loc位置
plt.legend()
#显示
plt.show() 

 python学习之图表坐标系中文显示_第5张图片

 OK

你可能感兴趣的:(python基础部分知识点,python,学习,matplotlib)