matplotlib折线图
import matplotlib.pyplot as plt import random #创建一个整数序列 x=range(60)
#随机60个15到18的数
y=[random.uniform(15,18)for i in x]
plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y)
plt.show()
这便是一个最基本的折线图,代码运行结果如下:
#准备数据 x=range(60) y_shanghai=[random.uniform(15,18)for i in x] #创建画布 plt.figure(figsize=(20,8),dpi=100) #绘制图像 plt.plot(x,y_shanghai) #设置x,y轴刻度 x_ticks=["11点{}分".format(i) for i in x] y_ticks=range(40) #修改坐标刻度显示 plt.xticks(x[::5]) plt.yticks(y_ticks[::5]) #图像显示 plt.show()
在这里通过xticks和yticks两个函数修改坐标刻度,使其每隔5为一个刻度。代码运行如下:
如果我们希望将x的下标改为11点{}分的形式,可以对函数进行改动
#准备数据 x=range(60) y_shanghai=[random.uniform(15,18)for i in x] #创建画布 plt.figure(figsize=(20,8),dpi=100) #绘制图像 plt.plot(x,y_shanghai) #设置x,y轴刻度 x_ticks=["11点{}分".format(i) for i in x] y_ticks=range(40) #修改坐标刻度显示 plt.xticks(x[::5],x_ticks[::5]) plt.yticks(y_ticks[::5]) #图像显示 plt.show()
注意在xticks函数中,下标不可以直接通过字符串进行修改
plt.xticks(x_ticks[::5])这样的写法是错误的。
可以看到,这里的下标并没有显示中文,可以通过插入头文件的方式解决
from pylab import mpl #设置显示中文字符 mpl.rcParams["font.sans-serif"]=["SimHei"] #设置正常显示字符 mpl.rcParams["axes.unicode_minus"]=False
运行如下:
此外,我们可以添加表格线,以图更直观的展示数据
#准备数据 x=range(60) y_shanghai=[random.uniform(15,18)for i in x] #创建画布 plt.figure(figsize=(20,8),dpi=100) #绘制图像 plt.plot(x,y_shanghai) #设置x,y轴刻度 x_ticks=["11点{}分".format(i) for i in x] y_ticks=range(40) #修改坐标刻度显示 plt.xticks(x[::5],x_ticks[::5]) plt.yticks(y_ticks[::5]) #添加网格线 plt.grid(True,linestyle="--",alpha=1) #图像显示 plt.show()
运行如下:
#添加变量名及题目 plt.xlabel("时间") plt.ylabel("温度") plt.title("某城市11点到12点的温度变化",fontsize=20)
结果如下:
当需要显示两条线时:
#准备数据 x=range(60) y_shanghai=[random.uniform(15,18)for i in x] y_beijing=[random.uniform(1,3)for i in x] #创建画布 plt.figure(figsize=(20,8),dpi=100) #绘制图像 plt.plot(x,y_shanghai,label="上海") plt.plot(x,y_beijing,color="r",linestyle="--",label="北京") #设置x,y轴刻度 x_ticks=["11点{}分".format(i) for i in x] y_ticks=range(40) #修改坐标刻度显示 plt.xticks(x[::5],x_ticks[::5]) plt.yticks(y_ticks[::5]) #添加网格线 plt.grid(True,linestyle="--",alpha=1) #添加变量名及题目 plt.xlabel("时间") plt.ylabel("温度") plt.title("某城市11点到12点的温度变化",fontsize=20) #显示图例 plt.legend(loc="best") #图像显示 plt.show()