导入
from matplotlib import pyplot as plt
import numpy as np
plt.figure(num=,figszie=(),dpi=分辨率,facecolor=边框颜色) #设置画布
plt.plot(x,y,c[olor]=,l[in]s[tyle]=,l[ine]w[idth]=,label=)
plt.legend(loc='best'/ceter/···,fontsize=,frameon=是否有边框) #设置图例
plt.xlim([,]) / plt.ylim([,]) #x,y范围
plt.xlabel('标签',labelpad=距离轴数值) / plt.ylabel('标签') #x,y的轴解释信息
plt.title('标题',pad=距离轴数值,fontsize=字体大小) # 标题
plt.xticks(xticks,[]) / plt.xticks(xticks,[]) #刻度
plt.savefig('路径.pdf/png') #保存图片
plt.show() #展示
解决中文乱码:
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
简单图形
# 散点图
x=np.random.normal(0,1,n)
y=np.random.normal(0,1,n)
plt.scatter(x,y,alpha=0.7,color='r')
#饼图:
plt.pie(x=x_date,explode=explode,labels=y_data,colors=colors,\
autopct='.1f%%',pctdistance=0.5,labeldistance=1.1,startangle=120,\
radius=1.2,counterclock=False,wedgeprops={'linewidth':1.5,'edgecolor':'green'},
textprops={'fontsize':10,'color':'black'})#centerclock是否逆时针呈现,explode:突出显示
#条形图
plt.bar(range(len(x_data)),x_data,align='center',color='y',tick_label=y_labels)
#直方图:
plt.hist(data,bins=5,color='r',edgecolor='black',density=True) #density频数
设置参数
plt.grid(ls=类型,c=颜色)
plt.axhline(y=1700,c='red',ls='--',lw=2) #设置平行于x轴的线
plt.axvline(x=1700,c='red',ls='--',lw=2) #设置平行于y轴的线
plt.axvspan(xmin=4,xmax=6,facecolor='r',alpha=0.3 )# 设置平行于y的参考区
plt.axhspan(xmin=4,xmax=6,facecolor='r',alpha=0.3 )# 设置平行于x的参考区
画线性图(两张)
x=np.linspace(-1,1,50)
y = 2*x+1
plt.figure(num=1,figsize=(8,5),dpi=80) # 设置图片信息,图片的大小, 像素,图片的名字
plt.plot(x,y) # 画什么样的图
#设置第二张图
plt.figure(num=2)
l1,=plt.plot(x,y2)
l2,=plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.show() # 展示图片
设置坐标轴刻度信息
# 设置刻度
new_ticks = np.linspace(-1,2,5)
plt.xticks(new_ticks) #设置坐标轴的刻度
#对应文字
plt.yticks([-2,-1.8,-1,1.22,3,],['really bad','bad','normal','good','really good'])
# 把文字信息跟坐标轴刻度对应
#设置轴刻度范围:
plt.xlim((-1,2)) # x 轴的范围
plt.ylim((-2,3)) # y 轴的范围
设置坐标轴的标签
plt.xlabel('i am x ')
plt.ylabel('i am y ')
调整轴的位置:
ax=plt.gca() # 当前轴
ax.spines['right'].set_color('none') #把框的右边变成空
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') #把底部的框变作为x轴
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',-1)) # 根据数字来设置轴移动到哪
ax.spines['left'].set_position(('data',0))
线上添加注解
plt.annotate()
plt.text()
设置坐标轴的label
ax=plt.gca()
for label in ax.get_xticklabels()+ax.get_yticklabels():
label.set_fontsize(12)
label.set_bbox(dict(facecolor='black',edgecolor='None',alpha=0.7))
n=12
x=np.arange(n)
y1=(1-x/float(n))*np.random.uniform(0.5,1.0,n)
y2=(1-x/float(n))*np.random.uniform(0.5,1.0,n)
plt.bar(x,+y1,facecolor='#9999ff',edgecolor='white')
plt.bar(x,-y1,facecolor='#ff9999',edgecolor='white')
for i,j in zip(x,y1):
plt.text(i,j+0.05,'%.2f'%j,ha='center',va='bottom')
for i,j in zip(x,y1):
plt.text(i,-j-0.1,'%.2f'%j,ha='center',va='bottom')
plt.xticks(())
plt.yticks(())
plt.show()
分图
plt.figure()
plt.subplot(221)
plt.plot([0,1],[0,1])
plt.subplot(222)
plt.plot([0,1],[0,1])
plt.subplot(223)
plt.plot([0,1],[0,1])
plt.subplot(224)
plt.plot([0,1],[0,1])
plt.show()
# 特别的分法
plt.figure()
plt.subplot(211)
plt.plot([0,1],[0,1])
plt.subplot(234)
plt.plot([0,1],[0,1])
plt.subplot(235)
plt.plot([0,1],[0,1])
plt.subplot(236)
plt.plot([0,1],[0,1])
plt.show()
plt.figure()
ax1=plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)
ax1.plot([0,1],[0,1])
ax1.set_title('xa1_title')
ax1=plt.subplot2grid((3,3),(1,0),colspan=2,rowspan=1)
ax1.plot([0,1],[0,1])
ax1.set_title('xa2_title')
ax1=plt.subplot2grid((3,3),(1,2),colspan=1,rowspan=2)
ax1.plot([0,1],[0,1])
ax1=plt.subplot2grid((3,3),(2,0),colspan=2,rowspan=1)
ax1.plot([0,1],[0,1])
ax1.set_title('xa1_title')
图中图
fig = plt.figure()
x=[1,2,3,4,5,6,7]
y=[1,3,5,6,3,2,1]
left,bottom,width,height=0.1,0.1,0.8,0.8
ax1 = fig.add_axes([left,bottom,width,height])
ax1.set_xlabel('x')
ax1.plot(x,y)
left,bottom,width,height=0.6,0.6,0.25,0.25
ax1 = fig.add_axes([left,bottom,width,height])
ax1.plot(x,y)
主次坐标轴
x=[1,2,3,4,5,6]
y1=[1,2,3,4,5,6]
y2=[2,4,5,6,3,2]
fig,ax1 =plt.subplots()
ax2=ax1.twinx()
ax1.plot(x,y1,'g')
ax2.plot(x,y2)
ax1.set_xlabel('x')
ax2.set_ylabel('y',c='b')
ax1.set_ylabel('y')
ax2.set_yticks(y2)
plt.plot()
plt.show()