import matplotlib.pyplot as plt
import numpy as np
# 定義等高線(xiàn)高度函數(shù)
def f(x, y):
return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(- x ** 2 - y ** 2)
#return x**2+y**2
# 數(shù)據(jù)數(shù)目
n = 300
# 定義x, y
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)
# 生成網(wǎng)格數(shù)據(jù)
X, Y = np.meshgrid(x, y)
# 填充等高線(xiàn)的顏色, 8是等高線(xiàn)分為幾部分
plt.contourf(X, Y, f(X, Y), 8, alpha = 0.75, cmap = plt.cm.RdBu)
# 繪制等高線(xiàn)
C = plt.contour(X, Y, f(X, Y),8, colors = 'black', linewidth = 0.5)
# 繪制等高線(xiàn)數(shù)據(jù)
plt.clabel(C, inline = True, fontsize = 10)
# 去除坐標(biāo)軸
# plt.xticks(())
#plt.yticks(())
plt.show()
RdBu Colormap可以參考http://matplotlib.org/users/colormaps.html
上圖函數(shù)三維圖像
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def f(x, y):
return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(- x ** 2 - y ** 2)
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = f(X, Y)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.RdBu)
ax.contourf(X, Y, Z, zdir='z', offset=-3, cmap=plt.cm.RdBu)
ax.set_zlim(-3,3)
# savefig('../figures/plot3d_ex.png',dpi=48)
plt.show()