Matplotlib学习(一)快速上手

一、安装

       使用pip3安装
        pip3 install matplotlib

二、编写测试程序

import matplotlib.pyplot as plt
%matplotlib inline #兼容性写法,有些系统不需要也可执行
plt.figure() #创建画布
plt.plot([2,0,4], [1,1,9], [4,5,6], [1,3,2]) #画图
plt.show()

效果:

代码执行效果图

matplotlib结构图:
Matplotlib结构图

三、Matplotlib的三层结构

1:容器层

   画板(Canvas):位于最底层,充当画板,默认开启,不需要调用函数。
   画布(Figure):位于Canvas上层,充当画布角色,调用plt.figure()
   绘图区/坐标系(axes):位于Figure之上,相当于绘图区角色,默认创建一个,指定绘图区个数:plt.subplots()
   一个Figure可包含多个axes,但一个axes只能属于一个figure
   一个axes可包含多个axis(坐标轴),包含两个为2D,包含三个为3D坐标

2:辅助层:

   axes(绘图区)内的除了根据数据绘制的图像之外的内容,主要包括axes外观,边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容

3:图像层

   axes(绘图区)内通过plot、scatter、bar、histrgram、pie等函数根据数据回执出的图像

总结:
   Canvas(画板)位于最底层,用户一般接触不到
   Figure(画布)建立在Canvas上
   Axes(绘图区)建立在Figure之上
   坐标轴(axis)、图例(legend)等辅助显示层以及图像层建立在Axes之上

三层结构示意图

四、画布层面完善折线图-----设置画布大小、像素、保存图片

import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(10,5), dpi=80) #创建画布,制定画布大小,即dpi像素
plt.plot([2,0,4], [1,1,9], [4,5,6], [1,3,2]) #画图
plt.savefig("./a.png") #保持图像,一定要在show前面,否则为空图片
plt.show() #plt调用show后会释放资源,因此save要放到之前

1.使用figsize 和dpi参数制定画布大小以及像素值
2.使用savefig保存图像,注意:savefig一定要在show之前,因为show会释放画布资源。

优化后的折线图

五、辅助层完善则线图

xticks、yticks设置x、y轴的描述
grid设置网格线
xlabel、ylabel设置x、y轴标题
title设置画布标题

#模拟某地11点-12点的温度变化曲线图

import random
import matplotlib.pyplot as plt

%matplotlib inline

x = range(60) #x轴一小时时间点
y = [random.uniform(15,18) for i in x] #y轴温度变化
x_lable = ["11点{}分".format(i) for i in x] #x轴坐标描述

#画布
plt.figure(figsize=(10,5), dpi=80)

#画图
plt.plot(x, y)

#设置x,y轴的坐标显示
plt.xticks(x[::5], x_lable[::5])
plt.yticks(range(40)[::5])

#显示网格
plt.grid(linestyle="--", alpha=0.5)

#添加标题
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("上海温度变化曲线图")

#显示图
plt.show()

效果:

完善后效果图

六、图像层完善--添加多条折线

添加多条折线、设置折线样式:plt.plot(x, y_shanghai, color = "r", label="上海")
添加图例:plt.legend()

#模拟某地11点-12点的温度变化曲线图

import random
import matplotlib.pyplot as plt

%matplotlib inline

x = range(60) #x轴一小时时间点
y_shanghai = [random.uniform(15,18) for i in x] #y轴温度变化
y_beijing = [random.uniform(10,12) for i in x] #y轴温度变化
x_lable = ["11点{}分".format(i) for i in x] #x轴坐标描述

#画布
plt.figure(figsize=(10,5), dpi=80)

#画图
#plt.plot(x, y_shanghai, x, y_beijing)
plt.plot(x, y_shanghai, color = "r", label="上海")
plt.plot(x, y_beijing, color = "b", linestyle="--", label="北京")

#显示图例
plt.legend()

#设置x,y轴的坐标显示
plt.xticks(x[::5], x_lable[::5])
plt.yticks(range(40)[::5])

#显示网格
plt.grid(linestyle="--", alpha=0.5)

#添加标题
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("上海-北京温度变化曲线图")

#显示图
plt.show()

效果:

效果图

你可能感兴趣的:(Matplotlib学习(一)快速上手)