5.设置随机漫步图的样式
给点着色
我们将使用颜色映射来指出漫步中各点的先后顺序,并删除点的轮廓颜色
为根据漫步中各点的先后顺序着色,我们传递参数c,并将其设置为一个列表
其中包含各点的先后顺序,由于这些点是按顺序绘制的
因此给参数指定的列表只需包含数字1~5000,如下所示:
import matplotlib.pyplot as plt
from random_walk import RandomWalk
while True:
#创建一个RandomWalk实例,并将其包含的点都绘制出来
rw = RandomWalk()
rw.fill_walk()
point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_values,rw.y_values,c=point_numbers,cmap=plt.cm.Blues,
edgecolor='none',s=5)
plt.show()
keep_running = input('Make another walk? (y/n):')
if keep_running == 'n':
break
我们使用了range()生成了一个数字列表
其中包含的数字与漫步包含的点数相同
接下来,我们将这个列表存储在point_numbers中
以便后面使用它来设置每个漫步点的颜色,我们将参数c设置为point_numbers
指定使用颜色映射Blues,并传递实参edgecolor=none以删除每个点周围的轮廓
最终的随机漫步图从浅蓝色渐变为深蓝色,如图:
三,绘制三角函数图像
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-np.pi, np.pi, 50)
C,S = np.cos(X), np.sin(X)
plt.plot(X,C)
plt.plot(X,S)
plt.show()
使用import导入模块matplotlib.pyplot,并简写成plt
使用import导入模块numpy,并简写成np
使用np.linspace定义x:范围是(-π,π);个数是50.
仿真一维数据组(X,C)表示COSX,仿真一维数据组(X,S)表示SINX
绘制图像如下:
下面对图形进行修饰
1.移动x,y轴,使坐标原点为(0,0)
2.修改图线属性,并将对应的函数注明在图线左上角
3.修改坐标值
4.备注图像名称
大概想到这些,下面开始改代码
修改后如下:
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['STFangsong']
import numpy as np
X = np.linspace(-np.pi, np.pi, 50)
C,S = np.cos(X), np.sin(X)
plt.plot(X, C, color="blue", linewidth=1.5, linestyle="--", label="cos")
plt.plot(X, S, color="red", linewidth=1.5, linestyle="-", label="sin")
plt.legend(loc='upper left')
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],['${-\pi}$', '${-\pi}{/2}$', '$0$', '${\pi}{/2}$', '${\pi}$'])
plt.yticks([-1,-0.5,0,0.5,1],['$-1$','$-1/2$','$0$','$1/2$','$1$'])
plt.title('正余弦函数',fontsize=15)
# plt.xlabel('x',fontsize=14)
# plt.ylabel('y',fontsize=14)
plt.show()
现在逐条解释代码含义
plt.plot(X, C, color="blue", linewidth=1.5, linestyle="--", label="cos")
plt.plot(X, S, color="red", linewidth=1.5, linestyle="-", label="sin")
plt.legend(loc='upper left')
设置图线颜色,线重(线的粗细),--为虚线,-为实线
legend将要显示的信息来自于上面代码中的label参数
loc='upper right' 表示图例将添加在图中的右上角.
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
使用plt.gca获取当前坐标轴信息
使用.spines设置边框:右侧边框;使用.set_color设置边框颜色:无色
使用.spines设置边框:上边框;使用.set_color设置边框颜色:无色
使用.xaxis.set_ticks_position设置x坐标刻度数字或名称的位置:bottom
使用.spines设置边框:x轴;使用.set_position设置边框位置:y=0的位置
使用.yaxis.set_ticks_position设置y坐标刻度数字或名称的位置:left
使用.spines设置边框:y轴;使用.set_position设置边框位置:x=0的位置
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],['${-\pi}$', '${-\pi}{/2}$', '$0$', '${\pi}{/2}$', '${\pi}$'])
plt.yticks([-1,-0.5,0,0.5,1],['$-1$','$-1/2$','$0$','$1/2$','$1$'])
使用plt.xticks设置x轴刻度以及名称:刻度为[-np.pi, -np.pi/2, 0, np.pi/2, np.pi]
对应刻度的名称为['-π', '-π/2', '0', 'π/2', 'π']
同理设置y轴刻度和名称
再加上title,最终效果图如下: