Python 绘图


Python 可以使用 matplotlib 库创建图表。它拥有众多包和函数,可以生成各种各样的图表和绘图。它也很容易使用。它与 numpy 和其他 Python 内置函数一起实现目标。在本文中,我们将了解它可以生成的一些不同类型的图表。

简单图表

这里我们使用数学函数来生成图表的 x 和 y 坐标。然后我们使用 matplotlib 为该函数绘制图表。在这里,我们可以应用标签并显示图表的标题,如下所示。我们正在为三角函数 - tan 绘制图表。

示例

from matplotlib import pyplot as plt
import numpy as np
import math #needed for definition of pi
x = np.arange(0, math.pi*2, 0.05)
y = np.tan(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("Tan value")
plt.title('Tan wave')
plt.show()

输出

运行以上代码将得到以下结果:

多图

通过创建多个坐标轴并在程序中使用它们,我们可以在单个画布上绘制两个或多个图表。

示例

import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # inset axes
axes3 = fig.add_axes([0.2, 0.3, 0.2, 0.3]) # inset axes
axes1.plot(x, np.sin(x), 'b')
axes2.plot(x,np.cos(x),'r')
axes3.plot(x,np.tan(x),'g')
axes1.set_title('sine')
axes2.set_title("cosine")
axes3.set_title("tangent")
plt.show()

输出

运行以上代码将得到以下结果:

子图网格

我们还可以创建一个包含不同图表的网格,每个图表都是一个子图。为此,我们使用函数 subplot2grid。在这里,我们必须仔细选择坐标轴,以便所有子图都能适应网格。可能需要一些尝试。

示例

import matplotlib.pyplot as plt
a1 = plt.subplot2grid((3,3),(0,0),colspan = 2)
a2 = plt.subplot2grid((3,3),(0,2), rowspan = 3)
a3 = plt.subplot2grid((3,3),(1,0),rowspan = 2, colspan = 2)
import numpy as np
x = np.arange(1,10)
a2.plot(x, x*x,'r')
a2.set_title('square')
a1.plot(x, np.exp(x),'b')
a1.set_title('exp')
a3.plot(x, np.log(x),'g')
a3.set_title('log')
plt.tight_layout()
plt.show()

输出

运行以上代码将得到以下结果:

等值线图

等值线图(有时称为等高线图)是一种在二维平面上显示三维表面的方法。它在 y 轴上绘制两个预测变量 X Y 和一个响应变量 Z 作为等值线。Matplotlib 包含 contour() 和 contourf() 函数,分别用于绘制等值线和填充等值线。

示例

import numpy as np
import matplotlib.pyplot as plt

xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)

X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)

fig,ax=plt.subplots(1,1)
cp = ax.contourf(X, Y, Z)
fig.colorbar(cp) # Add a colorbar to a plot
ax.set_title('Filled Contours Plot')

#ax.set_xlabel('x (cm)')
ax.set_ylabel('y (cm)')
plt.show()

输出

运行以上代码将得到以下结果:

更新于:2019年10月17日

898 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告