Matplotlib是一个用于绘制高质量图表的Python库。
其中的pyplot库提供了类似MATLAB的绘图API,用于创建各种图表和绘制各种图形
一般我们在导入pyplot库的时候,都会使用plt进行代替,
导入方法为:
from matplotlib import pyplot as plt
这样,当我们调用该函数时,不用输入matplotlib.pyplot....,而是直接用plt.....代替,以下内容将均使用plt进行调用函数处理
假设我们有一组两个小时内每分钟的温度数据,需要进行绘制如:
Temperatures = [random.randint(20,35) for i in range(120)]
minutes = range(0,120)
如图采用随机数生成20-35之间的随机整数。
此处我们可以直接进行绘制,调用如下函数即可
plt.plot(minutes,Temperatures)
plt.show()
可以看到,这是一个最基础的图形,横坐标显示分钟数,纵坐标显示温度。
如果我们想要图形更大点,更清晰一点,就需要画图前调用plt.figure()函数:
plt.figure(figsize=(20,10),dpi=80)
此处传入的两个参数分别为图形大小和图形清晰度,然后我们再画图,就会更大更清晰
接下来我们设置X轴的刻度和添加刻度信息,首先我们需要设置字体,导入matplotlib库中的字体管理库
from matplotlib import font_manager
这里有两种方法设置字体,第一种,直接调用matplotlib.rc()函数
# 设置字体方法1
font = {'family': 'MicroSoft YaHei',
'weight': 'bold',}
matplotlib.rc("font", family = 'MicroSoft YaHei', weight='bold')
这种方法并不是对每种电脑都适用,假如是苹果电脑,就需要更改相关参数,
第二种方法是把字体添加到python文件中
# 设置字体的方法2
my_font = font_manager.FontProperties(fname='C:/Users/12428/Desktop/Python code/test/msyhbd.ttc')
此处我是直接将微软雅黑粗体放到 当前目录中,通常情况下,Windows电脑的字体所在目录是:C:/Windows/Fonts/中。
plt.xticks()函数可以设置X轴的刻度,但是在这之前我们要生成刻度信息。
_x = list(minutes)[::3]
_x_tick = [f'10点{x}分' for x in _x[:20]]
_x_tick += [f'11点{x-60}分' for x in _x[20:]]
如上图,我们就生成了所需的刻度信息
调用plt.xticks(),并传入相关的参数
# _X与_x_tick需要一一对应,rotation为字体旋转角度
plt.xticks(_x,_x_tick,fontproperties=my_font,rotation=45)
接下来设置标题信息和坐标轴标题
# 设置坐标轴信息和
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度(℃)", fontproperties=my_font)
plt.title("10点~11点的温度变化信息", fontproperties=my_font)
添加网格使用如下函数:
# 设置网格,alpha为网格透明度
plt.grid(alpha=0.3)
调用函数如上述代码,此时,我们的图形画出来已经基本像样了
但是若要添加其他地方的温度数据,或者画多条数据,则需要调用多次plt.plot()函数
若我们还有这样一组数据
Temperatures2 = [random.randint(20,35) for i in range(120)]
直接画图,会出现两种不同颜色的线,但是我们需要对这个图形添加图例 ,在调用plt.plot()函数时,需要传入标签
# 画图
plt.plot(minutes,Temperatures,label="A地的气温变化")
plt.plot(minutes,Temperatures2,label="B地的气温变化")
设置图例:
# 设置图例
plt.legend(prop=my_font, loc="upper left")
最终的画图结果:
以上就是通过plt库画折线图的步骤,以下为源码:
from matplotlib import pyplot as plt
import random
from matplotlib import font_manager
# 设置字体的方法2
my_font = font_manager.FontProperties(fname='C:/Users/12428/Desktop/Python code/test/msyhbd.ttc')
Temperatures = [random.randint(20,35) for i in range(120)]
Temperatures2 = [random.randint(20,35) for i in range(120)]
minutes = range(0,120)
# 设置图形的大小
plt.figure(figsize=(20,10),dpi=80)
# 画图
plt.plot(minutes,Temperatures,label="A地的气温变化")
plt.plot(minutes,Temperatures2,label="B地的气温变化")
#设置X轴的坐标
_x = list(minutes)[::3]
_x_tick = [f'10点{x}分' for x in _x[:20]]
_x_tick += [f'11点{x-60}分' for x in _x[20:]]
# _X与_x_tick需要一一对应,rotation为字体旋转角度
plt.xticks(_x,_x_tick,fontproperties=my_font,rotation=45)
# 设置坐标轴信息和
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度(℃)", fontproperties=my_font)
plt.title("10点~11点的温度变化信息", fontproperties=my_font)
# 设置网格,alpha为网格透明度
plt.grid(alpha=0.3)
# 设置图例
plt.legend(prop=my_font, loc="upper left")
plt.show()
谢谢