Python深度解析matplotlib各种基础图

2021-11-22 16:00:23 浏览数 (1)

如果说 pandas 是 python 中一个处理数据的好手,那么 matplotlib 则是把这个数据展现在人们眼球面前的使者,本篇我们来学习一下 matplotlib 的用法和 pyplot 的方式作图,他画图便捷,唯一不足的是我觉得它没有那么高大上。

  • Matplotlib 是 python 最著名的会图库,它提供了一整套和 MATLAB 类似的绘图函数集,十分适合编写短小的脚本程序以进行快速绘图。
  • Matplotlib 通过 pyplot 模块提供一套和 MATLAB 类似的绘图的 API,将众多绘图对象所构成的复杂的结构隐藏的这套 API 内部。
  • 我们可以调用 pyplot 模块所提供的函数就可以实现快速绘图以及设置图标的各种细节,pyplot 模块虽然用法简单,但不适合在较大的应用程序中使用,通常是使用面向对象的方式来画图,本节我们先以 pyplot 的方式绘图。

常用的对象: Figure 、 可以理解为画板。 Axes 、 理解为画板的上画纸,一个画板上可以放一个以上的画纸。 Labels 、 标签,xlabel,ylabel 分别设置 X,Y 轴的标题文字。 Lim 、 xlim,ylim 分别设置 X,Y 轴的显示范围。 Legend 、 显示图示,即图中表示每条曲线的标签和样式的矩形区域。

常用图形  Plot 散列图

代码语言:javascript复制
from matplotlib import pyplot as plt #绘图库
import numpy as np  #科学计算
x=np.linspace(1,10,100) #等差数列
y=np.sin(x)
z=np.cos(x)
plt.figure(figsize=(10,4))
plt.plot(x,y,label="$sin(x)",color='r',linewidth=2)
plt.plot(x,z,label="$cos(x)",color='g',linewidth=2)
plt.xlabel('X')
plt.ylabel('Y')
plt.title("plt test")
plt.legend()
plt.show()

由于画图里的对象太多,属性更多,为了清晰思路,建议使用面向对象的方式来画图。下图为效果:

Scatter 散点图

代码语言:javascript复制
from matplotlib import pyplot as plt
import numpy as np
x = np.random.randint(1,10,20)
y = np.random.randint(1,10,20)
plt.figure(figsize=(10,4))
plt.scatter(x,y,s=x*100,label="$xy",marker=(5,1))
plt.xlabel('X')
plt.xlabel('Y')
plt.title("plt test")
plt.legend()
plt.show()

S 代表散点的面积大小,marker 的第一个参数代表散点的边数,第二个参数代表三 点的样式,0 代表多边形,1 代表星形,2 代表放射形,3 表示忽略边形也就是圆 形。

 Pie 饼图

代码语言:javascript复制
from matplotlib import pyplot as plt
import numpy as np
x=[4,5,6]
plt.figure()
plt.pie(x,labels=list('abc'),colors=list('gbr'))
plt.xlabel('X')
plt.ylabel('Y')
plt.title('plt test')
plt.legend()
plt.show()

Labels 代表每一块的标签,colors 是每一块的颜色。可以调整 figsize 调整大小。 可以改变是圆还是椭圆,如果是正方形的 figsize 就是正圆,否则就是椭圆。

 Bar 条形图

代码语言:javascript复制
from matplotlib import pyplot as plt
import numpy as np
x=[1,2,3,4]
y=[6,5,7,4]
y1=[2,3,4,5]
plt.figure(figsize=(10,6))
plt.bar(x,height=y,color='b',width=0.35,label='man')
plt.bar(np.array(x) 0.35,height=y1,color='g',width=0.35,label='woman')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('plt test')
plt.legend()
plt.show()

Bar 可以绘制柱状图,width 设置的是条状的宽度,在这里需要留意下,list 不能 直接和数字相加,需要用 np.array 转化为数组。看看效果。

条状图 使用barh可以画条状图。

代码语言:javascript复制
from matplotlib import pyplot as plt
import numpy as np
x=[1,2,3,4]
y=[6,5,7,4]
y1=[2,3,4,5]
plt.figure(figsize=(10,6))
plt.barh(np.array(x)-0.5,width=y,color='b',label='man')
plt.barh(np.array(x) 0.5,width=y1,color='r',label='woman')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('plt test')
plt.legend()
plt.show()

 Contour 环形图

代码语言:javascript复制
from matplotlib import pyplot as plt
import numpy as np
x,y = np.ogrid[-1:1:5j,-1:1:5j]
f = x**2 y**2
plt.contour(f,colors=list('gbr'))
plt.xlabel('X')
plt.xlabel('Y')
plt.title('plt test')
plt.legend()
plt.show()

环形图一般用来画等高线,工作用到不多。不太理解。实现效果如下

0 人点赞