课程链接:https://edu.csdn.net/course/detail/10446 ,文章引用了大量课程示例,如有侵权,请联系我删除,谢谢。
【教师】
覃秉丰
数据科学家
机器学习,深度学习神经网络领域多年开发研究经验,精通算法原理与编程实践。曾完成过多项图像识别,目标识别,语音识别的实际项目,经验丰富。关注深度学习领域各种开源项目,如TensorFlow,Caffe,Torch等。喜欢理论与实践相结合的教学风格,课程编排由浅入深,体系清晰完整。
【课程介绍】
Matplotlib是python中非常常用的绘图工具包,可用于查看显示数据分析的结果,查看程序运行流程等等。本课程会讲解到matplotlib中最常用的一些知识点,包括绘制基本图形,散点图,直方图,等高线图,3D图,动态图等等。同时还是涉及到legend图例,标注,多figure,subplot,设置坐标轴等一些内容。
【正文】
01. matplotlib其础用法
示例:画出一条直线
# coding: utf-8
# 微信公众号:深度学习与神经网络
# Github:https://github.com/Qinbf
# 优酷频道:http://i.youku.com/sdxxqbf
# In[1]:
import matplotlib.pyplot as plt
import numpy as np
# In[2]:
x = np.linspace(-1,1,100) #从-1到1生成100个点
y = 2*x + 1
plt.plot(x,y)
plt.show()
运行即可得如下图示:
02. matplotlib figure图像
示例:图示尺寸大小及线的颜色、粗细控制
# coding: utf-8
# 微信公众号:深度学习与神经网络
# Github:https://github.com/Qinbf
# 优酷频道:http://i.youku.com/sdxxqbf
# In[1]:
import matplotlib.pyplot as plt
import numpy as np
# In[2]:
x = np.linspace(-1,1,100)
y1 = 2*x + 1
y2 = x**2
plt.figure()
plt.plot(x,y1)
plt.figure()
plt.plot(x,y2)
plt.show()
# In[4]:
plt.figure()
plt.plot(x,y1)
plt.figure(figsize=(8,5)) #控制图示的尺寸大小
plt.plot(x,y2)
plt.show()
# In[5]:
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--') #控制虚线颜色,粗细
plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-') #控制实线颜色,粗细
plt.show()
图形对象函数figure()用法可参见以下链接:
https://www.cnblogs.com/gengyi/p/9388388.html
https://blog.csdn.net/zjyklwg/article/details/79477261
03. matplotlib设置坐标轴1
示例:给定坐标轴范围,给坐标轴命名
# coding: utf-8
# In[1]:
import matplotlib.pyplot as plt
import numpy as np
# In[4]:
x = np.linspace(-3,3,100)
y1 = 2*x + 1
y2 = x**2
#xy范围
plt.xlim((-1,2))
plt.ylim((-2,3))
#xy描述
plt.xlabel('I AM X')
plt.ylabel('I AM Y')
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-')
plt.show()
示例:给坐标轴更多的区间
import numpy as np
new_ticks = np.linspace(-2,2,11)
print(new_ticks)
脚本如下:
# coding: utf-8
# In[1]:
import matplotlib.pyplot as plt
import numpy as np
# In[5]:
x = np.linspace(-3,3,100)
y1 = 2*x + 1
y2 = x**2
#xy范围
plt.xlim((-1,2))
plt.ylim((-2,3))
#xy描述
plt.xlabel('I AM X')
plt.ylabel('I AM Y')
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-')
#对坐标轴划分更多的取值区间
new_ticks = np.linspace(-2,2,11)
plt.xticks(new_ticks)
plt.yticks([-1,0,1,2,3],
['level1','level2','level3','level4','level5'])
plt.show()
04. matplotlib设置坐标轴2
# coding: utf-8
# In[3]:
import matplotlib.pyplot as plt
import numpy as np
# In[10]:
x = np.linspace(-3,3,100)
y1 = 2*x + 1
y2 = x**2
#xy范围
plt.xlim((-1,2))
plt.ylim((-2,3))
#xy描述
plt.xlabel('I AM X')
plt.ylabel('I AM Y')
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-')
new_ticks = np.linspace(-2,2,11)
plt.xticks(new_ticks)
plt.yticks([-1,0,1,2,3],
['level1','level2','level3','level4','level5'])
#gca 获取当前轴
ax = plt.gca()
#把右边和上边的边框去掉
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
#把x轴的刻度设置为‘bottom’
#把y轴的刻度设置为‘left’
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
#设置bottom对应到0点,设置left对应到0点,即设置x轴, y周在(0, 0)的位置
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
plt.show()
05. matplotlib legend图例
# coding: utf-8
# 微信公众号:深度学习与神经网络
# Github:https://github.com/Qinbf
# 优酷频道:http://i.youku.com/sdxxqbf
# In[1]:
import matplotlib.pyplot as plt
import numpy as np
# In[3]:
x = np.linspace(-3,3,100)
y1 = 2*x + 1
y2 = x**2
#xy范围
plt.xlim((-1,2))
plt.ylim((-2,3))
#xy描述
plt.xlabel('I AM X')
plt.ylabel('I AM Y')
l1, = plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
l2, = plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-')
plt.legend(handles=[l1,l2],labels=['test1','test2'],loc='best')
new_ticks = np.linspace(-2,2,11)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-1,0,1,2,3],
['level1','level2','level3','level4','level5'])
plt.show()
06. matplotlib标注
# coding: utf-8
# In[1]:
import matplotlib.pyplot as plt
import numpy as np
# In[14]:
x = np.linspace(-1,1,100)
y1 = 2*x + 1
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='-')
#gca get current axis
ax = plt.gca()
#把右边和上边的边框去掉
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
#把x轴的刻度设置为‘bottom’
#把y轴的刻度设置为‘left’
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
#设置bottom对应到0点
#设置left对应到0点
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
x0 = 0.5
y0 = 2*x0 + 1
#画点
plt.scatter(x0,y0,s=50,color='b')
#画虚线
plt.plot([x0,x0],[y0,0],'k--',lw=2)
plt.annotate(r'$2x+1=%s$' % y0,xy=(x0,y0),xytext=(+30,-30),textcoords='offset points',fontsize=16,
arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
plt.text(-1,2,r'$this\ is\ the\ text$',fontdict={'size':'16','color':'r'})
plt.show()
07. matplotlib scatter散点图
08. matplotlib bar方图
09. matplotlib contours等高线图
10. matplotlib 3D图
11. matplotlib subplot
12. matplotlib动杰图