1.基本图形
散点图
plt.scatter(x,y,s=20,c='b',marker='')
折线图
plt.plot(x,y)
plt.plot_date(date,y,'-') plt的plot_date默认画的的是散点
条形图
plt.bar(left=, height= , color='blue',width=0.8) 常用位置与默认参数
plt.barh(left=0,bottom=,height=)
示例:
index=np.arange(4)
s_a=[1,2,3,4]
s_b=[2,3,4,5]
bar_width=0.3
并列图形
plt.bar( index, s_a, bar_width, color='b' )
plt.bar(index+bar_width , s_b , bar_width , color='r' )
层叠:
plt.bar(index,a,wd)
plt.bar(index,b,wd,color='r',bottom=a)
直方图
单变量直方图:y轴表示频率
plt.hist(x,bins=10,clolor='blue',normed=True) normed标准化,不显示个数显示频率
双变量直方图,xy表示维度,颜色亮度表示分布
饼状图
plt.axes(aspect=1) 将x与y轴的比例调为1,不为1则饼状图的图形有压缩
plt.pie(x= , labels=labels,autopct='%0.f%%' , explode=[ ] , shadow=True)
参数: x为数据,labels为标签 autopet显示各区域的半分比 explode为与x同长度,将图形突出显示 shadow显示阴影
示例:
plt.axes(aspect=1)
X=[1,2,3,4]
labels=['a','b','c','d']
explode=[0,0.05,0.08,0]
plt.pie(X,labels=labels,explode=explode,autopct='%.2f')
箱型图
显示数据分散情况
上边缘,上四分位数,中位数,下四分位数,下边缘,异常值
data=np.random.normal(size=1000,loc=0,scale=1)
plt.boxplot(data,sym='o',whis=1.5) sym调整异常值点的形状,
whis调整上下边缘长度,为比例值,whis越大,边缘越长
示例2:箱型图对比
data=np.random.normal(size=(1000,4))
lables=['a','b','c','d']
plt.boxplot(data,lables=lables)
2.颜色和样式
基本颜色
内建颜色
b(blue) g(grenn) r(red) c(cyan) m(magenta) y(yellow) k(boack) w(white)
其他颜色:灰色 RGB 十六进制
y=np.arange(5)
plt.plot(y,color='r')
plt.plot(y+1,color='0.5') 灰度
plt.plot(y+2,color='#ff00ff')
plt.plot(y+3,color=(0.1,0.2,0.3))
点的形状
marker 显示指定marker时有线段,隐式时,按位置指定时只有形状
点的形状有多种,不同形状默认使用不同颜色
. , o v < > 1 2 3 4 8 s p * h H + x D d
线的形状
- 实线 -- 虚线 -. 点划线 :点线
样式字符串 颜色 点形 线形 字符串表示'
3.面向对象
多图与子图
FigureCanvas Figure Axes 三个对象
fig=plt.figure() 画布对象,每个figure对象是一个图
ax1=fig.add_subplot(2,2,1) 子图,设定规格和位置
ax1.plot(x,y) 在子图上绘制图形
ax2=fig.add_subplot(2,2,2)
ax3=fig.add_subplot(2,2,3)
ax4=fig.add_subplot(2,2,4)
4.格式
4.1网格
ax.grid(color='r', linestyle=' ') 设置网格效果,可以改颜色和线性
4.2图例
plt.plot(x,x,label='figneme')
plt.plot(x,x**2, label='secordname')
plt.legend() 显示设置的图例,位置默认best
plt.legend( [ 'a', 'b' ] , loc=[0~10] , ncol=2) 位置参数 loc ,用数字代替位置,0是自适应,ncol设置图例的列数,图例很多时将图例扁平化换
4.2.1设置图例的方法
方法1:绘图时设置
plt.plot(x,x,label='name')
ax.plot(x,x,label='b') 在绘图时用label参数设置图例名称,用该方法时必须用plt.legend ()和ax.legend()将图例显示出力
方法2:legend()方法设置
plt.legend([ ]) 和 ax.legend([ ]) 传入列表参数即为设置图例,同时设置位置和列数
4.3坐标轴范围
plt.axis() 显示坐标轴范围
plt.axis([ -10, 10 , 0 ,10 ]) 可以直接传入列表参数设置坐标轴范围
plt.xlim() 显示x的范围 ,传入列表参数为设置,plt.ylim([ 0,100]) ,也可以用ymin 和ymax 指定单边
plt.xlim([0,10]) 或 plt.xlim(xmin=0,xmax=10) 相同效果
ax.set_xlim() 和 ax.set_ylim()为对应的面向对象的方式设置坐标轴范围
4.4坐标轴刻度
ax=plt.gca() plt.gca()函数用来获取当前图形的坐标轴
ax.locator_params(nbins=20) 可以指定轴 plt.locator_params('x' , nbins=5)
4.5 副坐标轴
方法1:plt方式
plt.plot()
plt.twinx() 添加一个副坐标轴,默认0到1
plt.plot(x,y) 默认的图形对应副坐标轴
方法2:面向对象方式
x=np.arange(2,20)
y1=x*x
y2=np.log(x)
fig=plt.figure()
ax1=fig.add_subplot(111)
ax1.plot(x,y1)
ax1.set_ylabel('y1')
ax1.set_xlabel('y1 vs y2')
ax1.set_ylim([0,400])
ax2=ax1.twinx()
ax2.plot(x,y2)
ax2.set_ylabel('y2')
plt.show()
类似twinx() 方法,也有twiny()方法,共享y轴,x轴上下不同
4.6 注释
4.6.1 annotate() 注释
plt.annotate('this is zhusi', xy=(0,2), xytext=(0,10),arrowprops=dict(facecolor='r', headlength=5 ,headwidth=5, width=2 ) ) 注释函数
.annotate()参数,第一个str类型参数,为注释文本内容,xy参数为元祖,设置注释所在坐标位置,xytext参数为元祖,设置注释文本所在内容,arrowprops为显示注释图形,dict()为箭头,包含多个参数,常用的 facecolor设置注释颜色,headlength设置箭头长度,headwidth设置箭头宽度,width设置箭尾宽度
x=np.linspace(-10,10,100)
y=x*x
plt.plot(x,y)
plt.ylim(ymin=0)
plt.annotate('this is zhusi', xy=(0,2), xytext=(0,10),arrowprops=dict(facecolor='r', headlength=5 ,headwidth=5, width=2 ) )
4.6.2 文本注释
plt.text(x, y , str , family=' ' , size= , color= ,style= , weight= , bbox=dict(facecolor= , alpha=0.2)) 文本注释,设置文本的一些参数,x,y为设置文本的起始坐标,str为文本的字符串内容,family设置字体的样式如宋体等,size设置大小,color设置颜色,style设置样式如倾斜,weight设置粗体等款细,bbox设置文本的边框,在dict()中设置参数,facecolor设置边框颜色,alpha设置透明度。
x=np.linspace(-10,10,100)
y=x*x
plt.plot(x,y)
plt.ylim(ymin=0)
plt.text(0, 25, 'zhushi', family='serif' , size=20, color='r' ,style='italic', weight='black', bbox=dict(facecolor='r',alpha=0.2))
plt.text(0,5,'duibi')
4.6.3公式
matplotlib自带 mathtext引擎,不用安装Tex系统
参考matplotlib公式手册
.text() 方法,将str参数传入数学公式的文本编辑内容,参考matplotlib文档规则
ax.text(2,4, r'$ \alpha_i \beta_j \pi \lambda \omega $',size=15)
ax.text(4,4 ,r'$ \sin(0)=\cos(\frac{\pi} {2}) $',size=15)
ax.text(2,2, r'$ \lim_{x \rightarrow y} \frac{1}{x^3} $',size=15)
ax.text(4,2,r'$ \sqrt[4]{x}=\sqrt{y} $',size=15)