使用matplotlib绘制高级图表

**1.**contour():生成三维结构表面的等值线图(需要先用f=(x, y)生成一个三维结构)

import numpy as np
dx = dy = 0.01
x = np.arange(-2.0,2.0,dx)
y = np.arange(-2.0,2.0,dy)
X,Y = np.meshgrid(x,y)             #meshgrid方法用来生成网格矩阵
def f(x,y):
    return (1-y**5 + x**5)*np.exp(-x**2-y**2)
C = plt.contour(X,Y,f(X,Y),8,colors='black')
plt.contourf(X,Y,f(X,Y),8)
plt.clabel(C,inline=1, fontsize=10)
plt.show()

输出:
使用matplotlib绘制高级图表_第1张图片
用contourf函数的参数cmap=还可以赋值其他颜色,例如plt.cm.hot
colorbar()函数还可以增加一个颜色图例

**2.**plot_surface():绘制曲面(3d),还可以用其他相应 的函数来打造其他的3d图形,只要将2d图形应用到Axes3d对象

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-2,2,0.1)
Y = np.arange(-2,2,0.1)
X,Y = np.meshgrid(X,Y)
def f(x,y):
    return (1-y**5 + x**5)*np.exp(-x**2-y**2)
ax.plot_surface(X,Y,f(X,Y),rstride=1,cstride=1,cmap=plt.cm.hot)
ax.view_init(elev=30,azim=125)              #旋转曲面,修改这两个参数可以从不同视角查看曲面
plt.show()                                   #elve(从哪个高度查看), azim(曲面旋转的角度)

使用matplotlib绘制高级图表_第2张图片

多面板图形


fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])  #用figure()函数读取到Figure对象
                                         #用此函数在它上面定义两个Axes对象
inner_ax = fig.add_axes([0.6,0.6,0.25,0.25])
x2 = x1 = np.arange(10)
y1 =  np.array([1,2,7,1,5,2,4,2,3,1])
y2 = np.array([1,3,4,5,4,5,2,6,4,3])
ax.plot(x1,y1)           #用plot()方法可以为Axes对象传入两列数据
inner_ax.plot(x2,y2)
plt.show()

使用matplotlib绘制高级图表_第3张图片

gs = plt.GridSpec(3,3)         #把绘图区域分成多个子区域
fig = plt.figure(figsize=(6,6))
x1 = np.array([1,3,2,5])
y1 = np.array([4,3,7,2])
x2 = np.arange(5)
y2 = np.array([3,2,4,6,4])
s1 = fig.add_subplot(gs[1,:2])          #把多个子区域分配给每一幅子图
s1.plot(x,y,'r')
s2 = fig.add_subplot(gs[0,:2])
s2.bar(x2,y2)
s3 = fig.add_subplot(gs[2,0])
s3.barh(x2,y2,color='g')
s4 = fig.add_subplot(gs[:2,2])
s4.plot(x2,y2,'k')
s5 = fig.add_subplot(gs[2,1:])
s5.plot(x1,y1,'b^',x2,y2,'yo')
plt.show()

使用matplotlib绘制高级图表_第4张图片

还有一些极区图(将角度列表和半径列表传给bar),3d散点图, 3d条状图, 3d曲面图等, 只需要将2d图形应用到Axes3d对象

你可能感兴趣的:(python学习)