有关Python的进阶,数据可视化开篇!内容为关于Matplotlib库的使用。
之前入门阶段发过几篇练题篇,有人私信询问入口链接,在这里点击蓝色字即可进入
点击这里开始练题
关于Matplotlib的学习,资源为开源内容,通过Datawhale组队学习获取,发布内容为个人笔记
Matplotlib是一个Python2D绘图库,能够以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形,用来绘制各种静态、动态、交互式的图表
可用于Python脚本,Python和IPython Shell、Jupyter notebook,Web应用程序服务器和各种图形用户界面工具包等。
Matplotlib的图像是画在figure(如Windows、jupyter窗体)上的,每一个figure又包含了一个或多个axes(一个可以指定坐标系的子区域)。最简单的创建figure以及axes的方式是通过pyplot.subplots命令,创建axes以后,可以使用Axes.plot回执最简易的折线图。
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
fig, ax = plt.subplots() #创建一个包含一个axes的figure
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) #绘制图像
plt.show()
Tick:在jupyter notebook中使用Matplotlib时会发现代码运行后会自动打印出类似
这是因为matplotlib的绘图默认打印出最后一个对象。解决方法:
1> 在代码块最后加入一个分号
2> 在代码块最后加一句plt.show()
3> 在绘图时将绘图对象显式赋值给一个变量如将plt.plot([1,2,3,4])改成line=plt.plot([1,2,3,4])
运行:
一个完整的Matplotlib图像通常会包括四个层级,也称容器。
Figure:顶层级,用来容纳所有绘图元素
Axes:Matplotlib宇宙的核心。容纳了大量元素用来构造一幅子图,一个Figure可以由一个或多个子图组成
Axis:axis的下属层级,用来处理所有和坐标轴。网格有关的元素
Tick:axis的下属层级,用来处理所有和刻度有关的元素
在上面调用绘图方法,也被称为OO模式(object-oriented style)
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2, 100)
fig, ax = plt.subplots()
ax.plot(x, x, label='linear')
ax.plot(x, x ** 2, label='quadratic')
ax.plot(x, x ** 3, label='cubic')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2, 100)
plt.plot(x, x, label='linear')
plt.plot(x, x ** 2, label='quadratic')
plt.plot(x, x ** 3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()
任何复杂的图表几乎都可以基于这个模板骨架填充内容而成
#step1
x = np.linspace(0,2,100)
y = x ** 2#step2 设置绘图样式,这一模块的扩展参考第五章进一步学习,这一步不是必须的,样式也可以在绘制图像时进行设置
mpl.rc('line',linewidth = 4,linestyle = '-.')#step3 定义布局,这一模块的扩展参考第三章进一步学习
fig,ax = plt.subplots()#step4 绘制图像,这一模块的扩展参考第二章进一步学习
ax.plot(x,y,label = 'linear')#step5 添加标签、文字、和图例,这一模块的扩展参考第四章进一步学习
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot)
ax.legend()
plt.show()
进阶内容有困难的同学,建议先巩固入门基础,可以点击这里进行练习