Matplotlib快速上手
- 一、初识Matplotlib
- 1.1 认识Matplotlib的图像结构
- 1.2 绘制一个折线图
- 二、给图像添加修饰
- 2.1 自定义x的刻度
- 2.2一图多线
- 2.3一图绘制多个坐标系子图
- 三、主流图形的绘制
- 3.1绘制柱状图
一、初识Matplotlib
是Python最常见的可视化工具之一
1.1 认识Matplotlib的图像结构
容器层:
Canvas:画板,位于最低分层,用户一般接触不到。
Figure:画布,建立在画板之上,相当于一个设计图纸。
Axes: 绘图区,建立在画之上。
辅助显示层:
是Axes(绘图区)中除了根据数据绘制出的图像以外的内容
如x,y坐标轴,边框线,绘图标题,网格线等。
图像层:
是指Axes内通过plot、scatter、bar、histogram、pie等函数根据数据绘制出的图形
1.2 绘制一个折线图
使用plt.plot(x,y)绘制折线图:
#调用matplotlib中的pyplot的绘图函数plot()方法进行绘图
#生成画布figure,然后在绘图区axes绘图
#在jupyter notebook中启用对matploytlib的支持
%matplotlib inline
#导包并将pyplot起别名为plt
from matplotlib import pyplot as plt
#添加数据
x = range(1,8)
y = [12,15,13,16,11,12,19]
#绘图
plt.plot(x,y)
#展示绘图
plt.show()
将下列代码加入上面代码给图像加点料:
参数含义:
color:设置折线颜色
alpha:设置折线透明度
linestyle:设置折线样式,支持’-', ‘–’, ‘-.’, ‘:’
linewidth: 设置折线的粗细
marker: 设置拐点的样式
#自定义折线的颜色,粗细以及拐点
plt.plot(x,y,color='red',alpha=0.5,linestyle='-',linewidth=3,marker='*')
增加标题的描述信息:
#有可能不显示中文,添加这行代码
plt.rcParams['font.sans-serif'] = ['SimHei']
#添加坐标轴和标题
plt.plot(x,y)
plt.xlabel('x轴坐标')
plt.ylabel('y轴坐标')
plt.title('我是图的标题')
二、给图像添加修饰
2.1 自定义x的刻度
xticks参数:
xticks(locs,[labels],kwargs)
locs:是数组参数,表示x-axis的刻度线显示标注的地方**,就是ticks的地方
第二个参数也是数组参数,表示locs数组表示的位置添加的标签,也就标签的值。
#导包
from matplotlib import pyplot as plt
import random
x=range(1,61)
y=[random.randint(15,18) for i in x]# 利用random.randint()函数在15-18之间取值60次
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
#设置x刻度
x_ticks = ["10点{}分".format(i) for i in x]
plt.xticks(list(x)[::3],x_ticks[::3],rotation=45) #[::3]从头到尾,间隔为3.
plt.show()
plt.xticks(list(x)[::3],x_ticks[::3],rotation=45)
list(x)[::3] :第一个参数,根据x的个数,调整x轴的疏密程度
x_ticks[::3]:第二个参数,还是用x的值作为刻度的标签,但是只获取了其中的一部分,为了确保第一个参数和第二个参数个数相同
rotation=45:默认刻度是横向的,这个是对文字进行旋转45度。
2.2一图多线
其实就是在一张画布上画两次,主要是学习一下如何区分开两条线。也就是增加描述信息
。
#导包
from matplotlib import pyplot as plt
import random
#准备数据
x=range(1,61)
print(x)
#手动模拟山东和北京的气温
y_shandong = [random.randint(15,18)for i in x]
y_beijing = [random.randint(13,16)for i in x]
#绘制图形画布
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y_shandong,label='山东',linestyle='--',color='red')
plt.plot(x,y_beijing,label='北京',linestyle='-',color='green')
#增加描述信息
plt.title("山东和北京的气温")
plt.xlabel("时间")
plt.ylabel("温度")
#设置x刻度,上个图的基础
x_ticks = ["10点{}分".format(i) for i in x]
plt.xticks(list(x)[::3],x_ticks[::3],rotation=45)
plt.show()
plt.grid设置网格线:把代码加到上一个代码plt.show()前
plt.grid(alpha=1,linestyle='-.')
legend()用来显示图例,图例中的文字需要在绘制方法中添加
plt.legend(loc=0)
添加这两行代码所示图像:
2.3一图绘制多个坐标系子图
subplot方法参数:
plt.subplot(nrows,ncols,index)创建子图
nrows:指定数据图区域分成多少行
ncols:指定将数据图区域分成多少列
index:指代获取第几个区域
#设置画布
fig,axes=plt.subplots(nrows=2,ncols=2,figsize=(20.,8),dpi=80)
将多个子图画在一张图上:
#导包
from matplotlib import pyplot as plt
import numpy as np
#准备数据
x=[1,10,14,16,17,18]
y=np.array([3,4,6,2,1,5])
#准备画布
plt.figure(figsize=(20.,8),dpi=80)
#绘制第一个子图
plt.subplot(2,2,1)
plt.plot(y)
plt.title("Axes1")
#绘制第二个子图
plt.subplot(2,2,2)
plt.plot(y**3)
plt.title("Axes2")
#绘制第三个子图
plt.subplot(2,2,3)
plt.plot(y**3)
plt.title("Axes3")
plt.show()
三、主流图形的绘制
3.1绘制柱状图
柱状图:利用柱子的高度,反应数据的差异
plt.bar(x,heigh,wight,color)
x:记录x轴上的标签
height:记录柱子高度
wight:设置柱子宽度
color:设置柱子的颜色,传入颜色列表[‘red’,‘blue’,‘black’,‘green’,‘gray’]等多种颜色
#在jupyter notebook中启用对matploytlib的支持
%matplotlib inline
#中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
#导包并将pyplot起别名为plt
from matplotlib import pyplot as plt
#准备数据
a=['流浪地球','疯狂的外星人','飞驰人生','大黄蜂','新喜剧之王']
b=[38.13,19.85,14.89,11.36,5.93]
#准备画布
plt.figure(figsize=(20.,8),dpi=80)
plt.bar(a,b)
plt.show()
设置宽度和颜色属性:
plt.bar(a,b,width=0.3,color=['red','#7CFC00','yellow'])