python--matplotlib基础

本文介绍了Python中使用matplotlib库进行基本图形绘制的方法,包括解决中文乱码问题、创建简单图形、设置坐标轴刻度和标签、调整轴位置、添加注解、创建分图以及主次坐标轴的应用。
摘要由CSDN通过智能技术生成

导入

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值