一、散点图
scatter()函数用于绘制一个点,它的基本用法同plot()差不多,示例如下:
示例1:
简单示例
#绘制一个点
import matplotlib.pyplot as plt
plt.scatter(2,4)
plt.show()
#绘制多个点,注意scatter()不能省略x轴参数
import matplotlib.pyplot as plt
x = [0,1,2,3,4]
y = [0,1,4,9,16]
plt.scatter(x,y,s=100) #参数s用于设置点的尺寸大小
plt.show()
示例2:
import matplotlib.pyplot as plt
x = list(range(1,1001))
y = [i**2 for i in x]
plt.scatter(x,y,s=1)
plt.axis([0,1100,0,1100000])
plt.show()
结果:
可以看到当点较多时它们将粘连为一条肉眼无法区分的曲线。
示例3:
生成随机点
import matplotlib.pyplot as plt
import numpy as np
x = np.random.rand(100)
y = np.random.rand(100)
plt.scatter(x,y,s=10,c='r')
plt.show()
结果:
二、颜色映射
颜色映射(colormap)是一系列颜色,它们从起始颜色渐变到结束颜色。在可视化中,颜色映射可用于突出数据的规律,使其可视性更强。
示例:
import matplotlib.pyplot as plt
x = list(range(1,1001))
y = [i**2 for i in x]
plt.scatter(x,y,s=1,c=y,cmap=plt.cm.Reds)
plt.axis([0,1100,0,1100000])
plt.show()
结果:
在示例中,我们将参数c设置为一个颜色列表,并使用cmap参数设置颜色映射,该颜色映射将会一一对应于颜色列表的每一个值上。
至于cmap参数的所有可选值,参照下面官方文档:
https://matplotlib.org/gallery/color/colormap_reference.html#sphx-glr-gallery-color-colormap-reference-py
三、随机漫步
随机漫步也叫随机游走,它的概念接近于布朗运动,是布朗运动的理想数学状态。随机漫步将得到一条随机路径,但这条路径里的每一次决策都是完全随机的,接下来用Python来模拟随机漫步。
为模拟随机漫步,我们将创建一个RandomWalk()类,它将模拟随机漫步的每一次随机决策。
RandomWalk()类(命名为rand_walk模块):
from random import choice
class RandomWalk():
def __init__(self,max_points=5000):
self.max_points = max_points
self.x_values = [0]
self.y_values = [0]
def fill_walk(self):
#随机漫步点不达到5000个不结束循环
while len(self.x_values) < self.max_points:
x_direction = choice([1,-1])#x轴方向随机选择向左还是向右
x_distance = choice(range(5))
x_step = x_direction * x_distance
y_direction = choice([1,-1])#y轴方向随机选择向上还是向下
y_distance = choice(range(5))
y_step = y_direction * y_distance
if x_step == 0 and y_step == 0: #原地踏步则重新循环
continue
next_x = self.x_values[-1] + x_step
next_y = self.y_values[-1] + y_step
self.x_values.append(next_x)
self.y_values.append(next_y)
随机漫步示例1:
import matplotlib.pyplot as plt
from rand_walk import RandomWalk
rw = RandomWalk()
rw.fill_walk()
plt.scatter(rw.x_values,rw.y_values,s=5,c='r')
plt.show()
结果:
随机漫步示例2:
添加colormap版。
import matplotlib.pyplot as plt
from rand_walk import RandomWalk
rw = RandomWalk()
rw.fill_walk()
points_num = list(range(rw.max_points))
#edgecolor 即点轮廓颜色属性,设为None
plt.scatter(rw.x_values,rw.y_values,s=5,c=points_num,cmap=plt.cm.Reds,edgecolor='None')
plt.show()
结果:
colormap呈现了点的先后顺序。
随机漫步示例3:
突出起点和终点并隐藏坐标轴。
import matplotlib.pyplot as plt
from rand_walk import RandomWalk
rw = RandomWalk()
rw.fill_walk()
points_num = list(range(rw.max_points))
plt.scatter(rw.x_values,rw.y_values,s=5,c=points_num,cmap=plt.cm.Reds,edgecolor='None')
#突出起始点与终止点
plt.scatter(0,0,c='black',s=10)
plt.scatter(rw.x_values[-1],rw.y_values[-1],c='blue',s=10)
#隐藏坐标轴
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
plt.show()
结果:
随机漫步示例4:
更多的决策点
回顾:
本篇提及的一些方法与知识
flt.scatter() #绘制一个点
flt.axis([x_min,x_max,y_min,y_max]) #设置坐标轴范围
edgecolor #点的轮廓颜色属性
颜色映射 cmap参数 plt.cm.Reds
随机漫步 RandomWalk类
plt.axes().get_xaxis().set_visible(False) #隐藏坐标轴
plt.axis('off') #不显示坐标轴