1.使用matplotlib的pyplot模块绘图
pyplot 主要用于交互式绘图和编程绘图生成简单图例。
2.使用方法:
(1)导入模块,取别名plt
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
(2) 2种绘图方法
1)上下文:
1》plt.plot(x,y)
plt.plot(x,y,x,np.cos(x),x,1-x)
plt.show() # 结束此次绘制。从而可以进行下一个画布绘制。
# plot可以多次添加绘制的内容,plot(x,y,x1,y1,x2,y2,...)
2》fig = plt.figure(figsize=(10,6),facecolor='yellow') # 创建画板|画布
ax1 = fig.add_subplot(2,2,1)
# 分成2*2个区块,取第1个。(第一排,1,2,第二排,3,4)
plt.plot(x,np.sin(x))
# 在ax1上用上下文方法绘制(在jupyter里绘制时需和前面在1个框里。)
plt.plot(x,np.cos(x)) #在ax1里画第2个图。
ax2 =fig.add_subplot(2,2,2) # 如果第2次为(3,2,1),画布可能有重叠的地方。
plt.plot(x,np.sin(x*0.5))# 在ax2里画图
plt.scatter(x,np.sin(x),label='SCATTER') # 散点图
plt.show() # 展示画板
2)画布对象绘制:
x1 = np.linspace(-1,1,100) # x1为100个-1到1的等差数列。
y1 = 2*x1 + 1
fig = plt.figure(figsize=(10,6),facecolor='pink') # 画板背景为粉色
ax1 = fig.add_subplot(221) # 坐标系对象
# 面向对象API调用
ax1.plot(x1,y1) # 在ax1上绘图
ax1.set_title('xxxx') #设置ax1标题为xxxx
ax1.set_xlabel('A') # 设置x标签为A
ax1.set_ylabel('B') #设置y标签为B
(3)标题的设置:
面对对象:
axes.set_title(title_name,color,fontsize)
上下文:
plt.title(title_name,color,fontsize)
例: plt.title('title_pos',color='red',fontsize=20,loc='center')
loc: 设置标题的位置 可选项: left center(默认) right
(4)坐标轴的设置:
plt.axis([xmin,xmax,ymin,ymax]) # plt.axis([-4,5,-9,7]) 默认是全部显示,可以通过axis函数设置想要的x,y范围
plt.axis(‘equal’)坐标轴的比例不变(2边等同)调整图形
plt.axis('scaled') 图形不变,坐标轴变化
plt.axis('off') 去掉坐标轴
独立的设置x轴或者y轴的范围 plt.xlim() plt.ylim()
单独的某一个坐标系进行设置 ax.set_xlim()
坐标轴标签
面向对象方式添加 ax.set_xlabel() ax.set_ylabel()
上下文: plt.xlabel() plt.ylabel()
plt.xlabel('x-label',color='red',fontsize=18,rotation=60)
plt.ylabel('y-label',rotation=80,fontdict={'color':'green','size':20})
color: 颜色
fontsize:大小
rotation: 旋转 度数
(5)图例:
2种方式:1)#在画图的时候添加label值
plt.plot(x,np.sin(x),label='SIN')
plt.plot(x,np.cos(x),label='COS')
plt.plot(x,x-1.5,label='NORMAL')
# 图例的显示通过legend
plt.legend(loc='upper center')
2)显示时增加label值
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))
plt.plot(x,x-1.5)
plt.legend(['SIN','COS','NORMAL'],loc='best')
(6)设置透明度 alpha RGBA
1) plt.plot(x,np.sin(x),color='#ff0000',alpha=0.3) #0.3表示透明度
2)plt.plot(x,np.sin(x),color='#ff000033') # 33表示透明度
(7)线条的表现方式
1)线条的设置
plt.plot(x,np.sin(x),ls='None',marker='o',lw=5)
Iw:linewidth设置线的宽度
ls:linestyle 线条风格,分为:
线条风格描述线条风格描述
'-'实线 ':'虚线 '--'破折线 '-.'点划线 'None' / ','什么都不画
# 破折线 dashes x= np.linspace(0,2*np.pi,50)
plt.plot(x,np.sin(x),dashes=[10,10,50,10]) # 长度:实线 虚线 实线 虚线
2)点型的设置:
plt.plot(x, np.sin(x), ls='None',marker='*',markersize=20,
markeredgecolor='orange',markeredgewidth=2,markerfacecolor='skyblue')
3)设置多条线的样式:
(8)坐标刻度的设置:
ax.set_yticks([...])
ax.set_xticks([...])
plt.xticks(ticks =[ ],labels=[ ])
(9)补充 从seaborn 里导入已下载好的数据方式:
import seaborn as sns
tips = sns.load_dataset('tips')
(10)设置颜色的方法
fig = plt.figure(figuresize = (5,3),facecolor= 'orange') ---->figure对象
ax = fig.add_subplot(111,facecolor = 'lightgray')------>ax对象
ax.plot(x,np.sin(x),color='yellowgreen') ---->color
color = '英文全称'
color = '别名‘
color ='#RRGGBBAA'
color=(0.1,0,3,0,8)
透明度: alpha = '0~1'
# jpg 0-255 uint8 usign int
# png 0-1 float32
plt.imshow(data.astype(np.uint8)) # 将原data的类型改为int8再进行图像展示
(11)保存:
fig.savefig('xxx,png')
3.案例:
(1)
(2) sin图像
x = np.linspace(0,2*np.pi,50)
plt.plot(x,np.sin(x))
plt.grid(axis = 'x' )# x轴上的网格线 # 默认'both'