6.5 移动轴脊
6.5.1 移动轴脊的位置
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpathes
xy = np.array([0.5,0.5])
polygon = mpathes.RegularPolygon(xy, 5, 0.2,color=‘y’)
ax = plt.axes((0.3, 0.3, 0.5, 0.5))
ax.add_patch(polygon)
ax.spines[‘top’].set_color(‘none’)
ax.spines[‘right’].set_color(‘none’)
ax.spines[‘left’].set_position((‘data’, 0.5))
ax.spines[‘bottom’].set_position((‘data’, 0.5))
plt.title(27)
plt.show()
6.5.2 实例3:正弦与余弦曲线
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[“font.sans-serif”] = [“SimHei”]
plt.rcParams[“axes.unicode_minus”] = False
x_data = np.linspace(-2 * np.pi, 2 * np.pi, 100)
y_one = np.sin(x_data)
y_two = np.cos(x_data)
fig = plt.figure()
ax = fig.add_axes((0.2, 0.2, 0.7, 0.7))
ax.plot(x_data, y_one, label='正弦曲线 ‘)
ax.plot(x_data, y_two, label=‘余弦曲线 ‘)
ax.legend()
ax.set_xlim(-2 * np.pi, 2 * np.pi)
ax.set_xticks([-2 * np.pi, -3 * np.pi / 2, -1 * np.pi, -1 * np.pi / 2,
0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi])
ax.set_xticklabels([’
−
2
π
-2\pi
−2π’, ‘
−
3
π
/
2
-3\pi/2
−3π/2’, ‘
−
π
-\pi
−π’, ’
−
π
/
2
-\pi/2
−π/2 ‘, ‘
0
0
0’,
‘
π
/
2
\pi/2
π/2’, ‘
π
\pi
π’, ‘
3
π
/
2
3\pi/2
3π/2’, ‘
2
π
2\pi
2π’])
ax.set_yticks([-1.0, -0.5, 0.0, 0.5, 1.0])
ax.set_yticklabels([-1.0, -0.5, 0.0, 0.5, 1.0])
ax.spines[‘right’].set_color(‘none’)
ax.spines[‘top’].set_color(‘none’)
ax.spines[‘left’].set_position((‘data’, 0))
ax.spines[‘bottom’].set_position((‘data’, 0))
plt.title(27)
plt.show()
7.1 使用mplot3d绘制3D图表
7.1.1 mplot3d概述
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
plt.title(27)
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection=‘3d’)
plt.title(27)
7.1.2 绘制常见的3D图表
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
fig = plt.figure()
ax = fig.add_subplot(111, projection=‘3d’)
X, Y, Z = axes3d.get_test_data(0.05)
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
plt.title(27)
plt.show()
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
x1 = np.arange(-5, 5, 0.25)
y1 = np.arange(-5, 5, 0.25)
x1, y1 = np.meshgrid(x1, y1)
r1 = np.sqrt(x1** 2 + y1 ** 2)
z1 = np.sin(r1)
fig = plt.figure()
ax = fig.add_subplot(111, projection=‘3d’)
ax.plot_surface(x1, y1, z1, cmap=cm.coolwarm, linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)
plt.title(27)
plt.show()
7.1.3 实例1:三维空间的星星
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams[“font.sans-serif”] = [“SimHei”]
plt.rcParams[“axes.unicode_minus”] = False
x = np.random.randint(0, 40, 30)
y = np.random.randint(0, 40, 30)
z = np.random.randint(0, 40, 30)
fig = plt.figure()
ax = fig.add_subplot(111, projection=‘3d’)
for xx, yy, zz in zip(x, y, z):
color = ‘y’
if 10 < zz < 20:
color = ‘#C71585’
elif zz >= 20:
color = ‘#008B8B’
ax.scatter(xx, yy, zz, c=color, marker=’’, s=160, linewidth=1, edgecolor=‘black’)
ax.set_xlabel(‘x轴’)
ax.set_ylabel(‘y轴’)
ax.set_zlabel(‘z轴’)
ax.set_title(‘3D散点图’, fontproperties=‘simhei’, fontsize=14)
plt.tight_layout()
plt.title(27)
plt.show()
7.2 使用animation制作动图
7.2.1 animation概述
%matplotlib qt5
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
x = np.arange(0, 2 np.pi, 0.01)
fig, ax = plt.subplots()
line, = ax.plot(x, np.sin(x))
def animate(i):
line.set_ydata(np.sin(x + i / 10.0))
return line
def init():
line.set_ydata(np.sin(x))
return line
ani = FuncAnimation(fig=fig, func=animate, frames=100,
init_func=init, interval=20, blit=False)
plt.title(27)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation
x = np.arange(0, 2 * np.pi, 0.01)
fig, ax = plt.subplots()
arr = []
for i in range(5):
line = ax.plot(x, np.sin(x + i))
arr.append(line)
ani = ArtistAnimation(fig=fig, artists=arr, repeat=True)
plt.title(27)
plt.show()
7.2.2 实例2:三维空间闪烁的星星
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
plt.rcParams[“font.sans-serif”] = [“SimHei”]
plt.rcParams[“axes.unicode_minus”] = False
xx = np.array([13, 5, 25, 13, 9, 19, 3, 39, 13, 27])
yy = np.array([4, 38, 16, 26, 7, 19, 28, 10, 17, 18])
zz = np.array([7, 19, 6, 12, 25, 19, 23, 25, 10, 15])
fig = plt.figure()
ax = fig.add_subplot(111, projection=‘3d’)
star = ax.scatter(xx, yy, zz, c=’#C71585’, marker=’’, s=160,
linewidth=1, edgecolor=‘black’)
def animate(i):
if i % 2:
color = ‘#C71585’
else:
color = ‘white’
next_star = ax.scatter(xx, yy, zz, c=color, marker=’’, s = 160, linewidth=1, edgecolor=‘black’)
return next_star
def init():
return star
ani = FuncAnimation(fig=fig, func=animate, frames=None, init_func =init, interval=1000, blit=False)
ax.set_xlabel(‘x轴’)
ax.set_ylabel(‘y轴’)
ax.set_zlabel(‘z轴’)
ax.set_title(‘3D散点图’, fontproperties=‘simhei’, fontsize=14)
plt.tight_layout()
plt.title(27)
plt.show()