数据可视化<第四天>

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,最终效果图如下:


你可能感兴趣的:(数据可视化<第四天>)