numpy 和 matplotlib 相关笔记
2018-04-24 本文已影响0人
老周_o_o
- 用numpy表示高阶的函数,并用matplotlib将函数对应的曲线画出来。可添加子图,可进行颜色填充,可3D,可等高图。
import numpy as np
import matplotlib.pyplot as plt
func = np.poly1d(np.array([1, 2, 3, 4]))
# print(func) # 1 x^3 + 2 x^2 + 3 x + 4
func1 = func.deriv(m=1)
# print(func1) # 3x^2 + 4x +3 对func求一阶导数
func2 = func.deriv(m=2)
# print(func2) # 6x + 4 对func求二阶导数
x = np.linspace(-10, 10, 30) # 起点-10,终点10,共描点30个
y = func(x)
y1 = func1(x)
y2 = func2(x)
plt.plot(x, y, 'ro', x, y2, 'g--') # 'ro'是红圆点,'g--'是绿色线条
plt.xlabel('this is x') # 这个是定义x,y坐标的名称
plt.ylabel('this is y')
plt.show()
Figure_1.png
'''添加子图'''
plt.subplot(311)
plt.plot(x, y, c='r', linestyle='-')
plt.title('Polynomial') # 多项式
plt.subplot(312)
plt.plot(x, y1, c='b', linestyle='-', marker='^') # 蓝色连线三角形标点
plt.title('first dervative') # 一阶导数
plt.subplot(313)
plt.plot(x, y2, c='g', linestyle='', marker='o') # 绿色不连线圆形标点
plt.title('second derivative') # 二阶导数
plt.show()
Figure_2.png
'''颜色填充'''
fig = plt.figure()
# fig.fill_between(x, y, y1, facecolor='b') # 'Figure' object has no attribute 'fill_between'
ax = fig.add_subplot(211)
ax.fill_between(x, y, y1, facecolor='b') # 在两条曲线之间填充
ax.grid(True)
ax2 = fig.add_subplot(212)
ax2.fill(x, y, facecolor='b', alpha=0.3) # 在曲线和'两端点之间线段'之间填充
ax2.fill(x, y1, facecolor='g', alpha=0.3)
ax2.grid(True)
plt.show()
Figure_3.png
'''三维绘图'''
from mpl_toolkits.mplot3d import Axes3D
u = np.linspace(-1, 1, 100)
x, y = np.meshgrid(u, u)
z = x ** 2 + y ** 2
fig = plt.figure()
ax = Axes3D(fig)
# cmap = color_map
ax.plot_surface(x, y, z, rstride=4, cstride=4, cmap='rainbow')
plt.show()
Figure_4.png
'''三维等高线图'''
u = np.linspace(-1, 1, 100)
x, y = np.meshgrid(u, u)
z = x**2+y**2
fig = plt.figure()
ax = fig.add_subplot(111)
ax.contourf(x, y, z)
plt.show()
Figure_5.png