import matplotlib.pyplot as plt
%matplotlib inline #可不要
plt.figure() #创建画布
plt.plot([1,0,9],[4,5,6])#横纵坐标
plt.show() #呈现
1.容器层
画板层(Canvas):最底层,一般接触不到
画布层(Figure):plt.figure()
绘图区/坐标系(Axes):plt.subplots()
2.辅助显示层
网格等
3.图像层
图表属性和风格
1.matplotlib.pyplot模块
import matplotlib.pyplot as plt #包含画图函数
2.折线图绘制与显示
#1.创建画布
plt.figure()
#2.绘制图像
plt.plot([1,2,3,4,5,6,7],[17,17,12,15,16,14,19])
#3.显示图像
plt.show()
import matplotlib.pyplot as plt
#figsize:图的长宽
#dpi:图像清晰度 dot per inch
#返回fig对象
plt.figure(figsize=(20,8),dpi=80)
#保存到指定路径
#注意不能放到plt.show()之后,因为show()会释放figure资源
#显示图像后保存只会保存空图片
plt.savefig("1.png")
import matplotlib.pyplot as plt
import random
#准备数据 x,y
x=range(60)
y1=[random.uniform(15,18)for i in x]
#创建画布
plt.figure(figsize=(20,8),dpi=80)
#绘制图像
plt.plot(x,y1)
#修改x,y刻度
#准备x的刻度说明
x_label=["11h{}min".format(i) for i in x]
plt.xticks(x[::5],x_label[::5])
plt.yticks(range(0,40,5)) #0-40,步长5
#添加网格 显示网格 线条风格 透明度
plt.grid(True,linestyle="--",alpha=0.5)
#添加描述信息
plt.xlabel("Time")
plt.ylabel("Temp")
ply.title("One city")
#显示图像
plt.show()
若出现中文无法显示问题,则需要安装SimHei字体
需求:再添加一个城市,改变显示风格
import matplotlib.pyplot as plt
import random
#准备数据 x,y
x=range(60)
y1=[random.uniform(15,18)for i in x]
#准备新数据
y2=[random.uniform(1,3) for i in x]
#创建画布
plt.figure(figsize=(20,8),dpi=80)
#绘制图像
plt.plot(x,y1,color="r",linestyle="--",label="Y1")
plt.plot(x,y2,color="b",linestyle="-.",label="Y2")
#显示图例
plt.legend()
#修改x,y刻度
#准备x的刻度说明
x_label=["11h{}min".format(i) for i in x]
plt.xticks(x[::5],x_label[::5])
plt.yticks(range(0,40,5)) #0-40,步长5
#添加网格 显示网格 线条风格 透明度
plt.grid(True,linestyle="--",alpha=0.5)
#添加描述信息
plt.xlabel("Time")
plt.ylabel("Temp")
ply.title("Two city")
#显示图像
plt.show()
注意:plt.函数名()相对于面向过程的方法,axes.set_方法名()相对于面向对象的方法。相关函数使用可查阅https://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes
import matplotlib.pyplot as plt
import random
#准备数据 x,y
x=range(60)
y1=[random.uniform(15,18)for i in x]
#准备新数据
y2=[random.uniform(1,3) for i in x]
#创建画布
#plt.figure(figsiza=(20,8),dpi=80)
#返回画布和绘图区,1行2列
figure,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=80)
#绘制图像
axes[0].plot(x,y1,color="r",linestyle="--",label="Y1")
axes[1].plot(x,y2,color="b",linestyle="-.",label="Y2")
#显示图例
axes[0].legend()
axes[1].legend()
#修改x,y刻度
#准备x的刻度说明
x_label=["11h{}min".format(i) for i in x]
axes[0].set_xticks(x[::5])
axes[0].set_xticklabels(x_label[::5])
axes[0].set_yticks(range(0,40,5)) #0-40,步长5
axes[1].set_xticks(x[::5])
axes[1].set_xticklabels(x_label[::5])
axes[1].set_yticks(range(0,40,5)) #0-40,步长5
#添加网格 显示网格 线条风格 透明度
axes[0].grid(True,linestyle="--",alpha=0.5)
axes[1].grid(True,linestyle="--",alpha=0.5)
#添加描述信息
axes[0].set_xlabel("Time")
axes[0].set_ylabel("Temp")
axes[0].set_title("Two city")
axes[1].set_xlabel("Time")
axes[1].set_ylabel("Temp")
axes[1].set_title("Two city")
#显示图像
plt.show()
运行结果:
plt.scatter(x,y)
name=['a','b','c']
age=[22,33,44]
x_ticks=range(len(name))
plt.figure()
plt.bar(x_ticks,age,color=['r','g','b']) #绘制
plt.xticks(x_ticks,name) #修改x刻度
plt.show()
运行结果
name=['a','b','c','d']
age1=[22,33,44,55]
age2=[66,55,44,33]
x_ticks=range(len(name))
plt.figure()
plt.bar(x_ticks,age1,width=0.2,color='r',label="First") #绘制
plt.bar([i+0.2 for i in x_ticks],age2,width=0.2,color='b',label="Second") #绘制
plt.legend() #显示图例
plt.xticks([i+0.1 for i in x_ticks],name) #修改x刻度
plt.show()
运行结果:
直方图展示数据分布,柱状图对比数据大小
组数bins=(max-min)//组距
time=[111,120,134,129,134,142,92,134,125,111,120,126,124,125,128,123,127,128,128,124,115,116,116,114,118,116,117,115,119,108,92,93,94,93,95,96,98,97,99]
distance=2
plt.figure(figsize=(20,8),dpi=80)
group_num=int((max(time)-min(time))/distance)
#显示频率plt.hist(time,bins=group_num,normed=True)
plt.hist(time,bins=group_num)
#修改x刻度 最小值 最大值+2,组距
plt.xticks(range(min(time),max(time)+2,distance))
plt.grid(linestyle="--",alpha=0.5)
plt.xlabel("Move time")
plt.ylabel("Move num")
plt.show()
运行结果
#数据准备
move_names=["a","b","c","d","e"]
move_count=[6650,6800,5200,1200,9200]
#创建画布
plt.figure(figsize(20,8),dpi=80)
#绘制饼图 数量 名称 颜色 格式
plt.pie(move_count,labels=move_names,
colors=['r','b','g','b','y'],autopct="%1.2f%%")
plt.axis('equal')
plt.legend()
plt.show()
运行结果: