使用Matplotlib画出线形图的简单教程

# import matplotlib.pyplot as plt
import numpy as np
#ipython 画图
%pylab inline 
In [10]:
#简单线图 

#生成测试数据 
x = np.linspace(-1,1,50) 
y = np.cos(x)

#figure创建一个绘图对象 figsize 图片大小
plt.figure(figsize=(10,5))

#画图 
plt.plot(x,y) #默认

#所有绘图对象
plt.show()
使用Matplotlib画出线形图的简单教程_第1张图片
In [51]:
#画多个子图

#生成测试数据 
x = np.linspace(-3,3,50) 
y = np.cos(x)
y1 = 2*x+1
y2 = np.sin(x)

#figure创建一个绘图对象 figsize 图片大小
plt.figure(figsize=(10,5))

plt.subplot(221) # 第一行的左图
plt.plot(x,y) 

plt.subplot(222) # 第一行的右图
plt.plot(x,y1)

plt.subplot(212) # 第二整行
plt.plot(x,y2) 


#所有绘图对象
plt.show()
使用Matplotlib画出线形图的简单教程_第2张图片
In [22]:
#显示标题和X、Y轴的文字和范围

#生成测试数据 
x = np.linspace(-1,1,50) 
y = np.cos(x)

#figure创建一个绘图对象 figsize 图片大小
plt.figure(figsize=(10,5))

#画图 
plt.plot(x,y) #默认

plt.xlabel("x label") #X轴的文字
plt.ylabel("y label")#Y轴的文字
plt.title("this is a title") #图表的标题

plt.xlim(-1.2,1.2) #设置Y轴的范围
plt.ylim(-1.2,1.2) #设置Y轴的范围

#所有绘图对象
plt.show()
使用Matplotlib画出线形图的简单教程_第3张图片
In [24]:
#设置X、Y轴坐标转换成字符坐标

#生成测试数据 
x = np.linspace(-3,3,50) 
y = np.cos(x)

#figure创建一个绘图对象 figsize 图片大小
plt.figure(figsize=(10,5))

#画图 
plt.plot(x,y) #默认

#根据相应坐标数 转换成字符坐标
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
           ['$-\pi$', '$-\pi/2$',  '$0$', '$\pi/2$','$\pi$']) 
plt.yticks([-1,0,1],['-one','zero','+one'])

#所有绘图对象
plt.show()
使用Matplotlib画出线形图的简单教程_第4张图片
In [12]:
#在同一figure对象中画多条线图

#生成测试数据 
x = np.linspace(-1,1,50) 
y = np.cos(x)
y2 = np.sin(x)
#figure创建一个绘图对象 figsize 图片大小
plt.figure(figsize=(10,5))

#画图 
plt.plot(x,y) #默认
plt.plot(x,y2) #默认
#所有绘图对象
plt.show()
使用Matplotlib画出线形图的简单教程_第5张图片
In [45]:
#带有图示的线图 

#生成测试数据 
x = np.linspace(-1,1,50) 
y = np.cos(x)
y2 = np.sin(x)
#label 在图示中显示 color 线的颜色 linewidth线的宽度 linestyle线的样式
plt.plot(x,y,label='$cos(x)$',color='red',linewidth=1.0,linestyle='--') #前后添加"$"符号 表示数学公式
plt.plot(x,y2,label='$sin(x)$')

#显示图例 plt.plot()中label和颜色及线型
#legend 的位置参数 best/upper right/upper left/lower left/lower right/right/center left
#/center right/lower center/upper center/center
plt.legend(loc='best')

#所有绘图对象
plt.show()
使用Matplotlib画出线形图的简单教程_第6张图片
In [48]:
#设置X、Y轴的显示隐藏和移动 字体背景的透明度

#生成测试数据 
x = np.linspace(-1,1,50) 
y = np.cos(x)
y2 = np.sin(x)
#label 在图示中显示 color 线的颜色 linewidth线的宽度 linestyle线的样式
plt.plot(x,y,label='$cos(x)$',color='red',linewidth=1.0,linestyle='--') #前后添加"$"符号 表示数学公式
plt.plot(x,y2,label='$sin(x)$')

#先把右边和上边的边界设置为不可见
ax=plt.gca()
ax.spines['right'].set_color('none') 
ax.spines['top'].set_color('none')

#然后把下边界和左边界移动到0点
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0)) 
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

#设置坐标轴字体的透明度
ax=plt.gca()
for label in ax.get_xticklabels()+ax.get_yticklabels():
    label.set_fontsize(12)
    label.set_bbox(dict(facecolor='blue',edgecolor='none',alpha=0.7))  #facecolor 前面颜色  edgecolor边框线 alpha透明度
    
#所有绘图对象
plt.show()
使用Matplotlib画出线形图的简单教程_第7张图片
In [42]:
#给X、Y轴的坐标添加标注

#生成测试数据 
x = np.linspace(0,np.pi,20)
y = np.sin(x)

#label 在图示中显示 color 线的颜色 linewidth线的宽度 linestyle线的样式
plt.plot(x,y,label='$cos(x)$',color='red',linewidth=1.0,linestyle='--') #前后添加"$"符号 表示数学公式


#添加标注
x0 = np.pi/2
y0 = np.sin(x0) 

plt.scatter(x0,y0,color='black')  #显示一个点
plt.plot([x0,x0],[0,y0],'b--') #在点到x轴画出垂直线
#标注方法1
plt.annotate('y = sin(x)' % y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',
             arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=-0.2'))
#标注方法2
plt.text(x0+0.1, y0,'this is a sin(x)line')

#所有绘图对象
plt.show()
使用Matplotlib画出线形图的简单教程_第8张图片
In [43]:
#全部设置完成
#复杂线形图
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
c,s=np.cos(x),np.sin(x)

#这里`b-`是`color="blue",linestyle="-"`的简写
#`lw`=`linewidth` 的简写
fig = plt.figure(figsize=(8,6),dpi=80)
plt.plot(x, c, 'b-',lw=1.5,label='cosine')
plt.plot(x, s, 'r-',lw=1,label='sine')

#显示图例 plt.plot()中label和颜色及线型 loc设置位置
plt.legend(loc='upper left') 
#legend 的位置参数
'''
	best
	upper right
	upper left
	lower left
	lower right
	right
	center left
	center right
	lower center
	upper center
	center
'''

plt.xlim(-3.2,3.2) #设置Y轴的范围 plt.xlim(x.min()*1.1, x.max()*1.1)
plt.ylim(-1.2,1.2) #设置Y轴的范围 plt.ylim(c.min()*1.1, s.max()*1.1)

#根据相应坐标数 转换成字符坐标
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
           ['$-\pi$', '$-\pi/2$',  '$0$', '$\pi/2$','$\pi$']) 
#plt.yticks([-1,0,1],['-one','zero','+one'])

#设置坐标轴的位置
#先把右边和上边的边界设置为不可见
ax=plt.gca()
ax.spines['right'].set_color('none') 
ax.spines['top'].set_color('none')
#然后把下边界和左边界移动到0点
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0)) 
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

#添加标注
x0 = np.pi/2
y0 = np.sin(x0) 
plt.scatter(x0,y0,color='black')  #显示一个点
plt.plot([x0,x0],[0,y0],'b--') #在点到x轴画出垂直线
#标注方法1
plt.annotate('y = sin(x)' % y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',
             arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=-0.2'))
#标注方法2
plt.text(x0+0.1, y0,'this is a sin(x)line')

#设置坐标轴字体的透明度
ax=plt.gca()
for label in ax.get_xticklabels()+ax.get_yticklabels():
    label.set_fontsize(12)
    label.set_bbox(dict(facecolor='white',edgecolor='none',alpha=0.7))

plt.show()
使用Matplotlib画出线形图的简单教程_第9张图片

你可能感兴趣的:(Python)