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()
输出
运行以上代码将得到以下结果:
广告