绘制简单的折线图
导入模块pyplot,指定别名plt,模块pyplot包含很多生成图表的函数
修改标签文字和线条粗细
参数linewidth决定了plot()绘制的线条的粗细。函数title()给图标指定标题。fontsize指定图标中文字的大小,xlabel()和ylabel()为每条轴设置标题;tick_params()设置刻度的样式,即x轴和y轴上的刻度,labelsize设置刻度标记的字号
矫正图形
同时给plot()输入值和输出值
import matplotlib.pyplot as plt
input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_values,squares,linewidth = 5)
#设置图标标题,并给坐标轴加上标签
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Value",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)
#设置刻度标记的大小
plt.tick_params(axis='both',labelsize = 14)
plt.show()
使用scatter()绘制散点图并设置其样式
实参s设置了绘制图形时使用的点的尺寸
使用scatter()绘制一系列点
import matplotlib.pyplot as plt
x_vlaues = [1,2,3,4,5]
y_vlaues = [1,4,9,16,25]
plt.scatter(x_vlaues,y_vlaues,s = 100)
#设置图标标题并给坐标轴加上标签
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Values",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)
#设置刻度标记的大小
plt.tick_params(axis='both',which = 'major',labelsize = 14)
plt.show()
自动计算数据
创建了一个包含x值的列表,包含数字1~1000.接下来生成y值的列表,遍历x计算平方值并将结果储存到列表y_vlaues中,axis()指定每个坐标轴的取决范围,axis()要求提供四个参数,x和y坐标轴的最小值和最大值
删除数据点地轮廓
matplotlib允许给图中各个点指定颜色,默认为蓝色点和黑色轮廓,要删除数据点地轮廓时,可使用参数edgecolor=’none‘
自定义颜色
修改数据点的颜色,可向scatter()传递参数c,还可以使用RGB颜色模式自定义颜色,传入参数c,设置为一个元组,其中包含三个0~1之间的小数值
import matplotlib.pyplot as plt
x_vlaues = list(range(1,1001))
y_vlaues = [x**2 for x in x_vlaues]
plt.scatter(x_vlaues,y_vlaues,c = 'red',edgecolors='none',s = 40)
#设置图标标题并给坐标轴加上标签
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Values",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)
#设置刻度标记的大小
plt.tick_params(axis='both',which = 'major',labelsize = 14)
#设置每个坐标轴的取值范围
plt.axis([0,1100,0,1100000])
plt.show()
使用颜色映射
颜色映射用于突出数据的规律,例如,用较浅的颜色显示较小的值,用较深的颜色显示较大的值,将参数c设置为一个y值列表使用参数cmap告诉pyplot使用哪种颜色映射
import matplotlib.pyplot as plt
x_vlaues = list(range(1,1001))
y_vlaues = [x**2 for x in x_vlaues]
plt.scatter(x_vlaues,y_vlaues,c = y_vlaues,cmap = plt.cm.Blues,edgecolors='none',s = 40)
#设置图标标题并给坐标轴加上标签
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Values",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)
#设置刻度标记的大小
plt.tick_params(axis='both',which = 'major',labelsize = 14)
#设置每个坐标轴的取值范围
plt.axis([0,1100,0,1100000])
plt.show()
自动保存图表
让程序自动将图表保存到文件中,将plt.show()替换成plt.savefig()
import matplotlib.pyplot as plt
x_vlaues = list(range(1,1001))
y_vlaues = [x**2 for x in x_vlaues]
plt.scatter(x_vlaues,y_vlaues,c = y_vlaues,cmap = plt.cm.Blues,edgecolors='none',s = 40)
#设置图标标题并给坐标轴加上标签
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Values",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)
#设置刻度标记的大小
plt.tick_params(axis='both',which = 'major',labelsize = 14)
#设置每个坐标轴的取值范围
plt.axis([0,1100,0,1100000])
plt.savefig('squares_plot.png',bbox_inches = 'tight')
随机漫步
随机漫步是这样行走得到的路径:每次行走都是随机的,没有明确的方向,结果是由一系列随机决策来决定的。随机漫步就是蚂蚁在晕头转向的情况下,每次都沿随机的方向前行所经过的路径
创建RandomWalk()类
这个类需要三个属性,其中一个是存储随机漫步次数的变量,其他两个是列表,分别存储随机漫步经过的每个点的x和y坐标,为做出随机决策,将尽可能的选择都存储在一个列表中,在每次做决策时都使用choice()来决定使用哪种选择,将随机漫步的默认点数设置为5000,创建存储x和y的列表,让每次漫步都从(0,0)出发
选择方向
from random import choice
class RandomWalk():
"""一个生成随机漫步数据的类"""
def __init__(self,num_points = 5000):
"""初始化随机漫步的属性"""
self.num_points = num_points
#所有随机漫步都始于(0,0)
self.x_values = [0]
self.y_values = [0]
def fill_walk(self):
"""计算随机漫步包含的所有点"""
#不断漫步,直到列表到达指定的长度
while len(self.x_values) < self.num_points:
#决定前进方向以及沿这个方向前进的距离
x_direction = choice([1,-1])
x_distance = choice([0,1,2,3,4])
x_step = x_direction * x_distance
y_direction = choice([1, -1])
y_distance = choice([0, 1, 2, 3, 4])
y_step = y_direction * y_distance
#拒绝原地踏步
if x_step == 0 and y_step == 0:
continue
#计算下一个点的x和y值
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)
绘制随机漫步图
设置随机漫步的样式
给点着色
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,edgecolors='none',s=15)
plt.show()
keep_running = input("Make another walk?(y/n):")
if keep_running == 'n':
break
重新绘制起点和终点
让起点和终点更大并显示为不同的颜色
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,edgecolors='none',s=15)
#突出起点和终点
plt.scatter(0,0,c='green',edgecolors='none',s = 100)
plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',edgecolors='none',s=100)
plt.show()
keep_running = input("Make another walk?(y/n):")
if keep_running == 'n':
break
隐藏坐标轴
import matplotlib.pyplot as plt
from random_walk import RandomWalk
#只要程序处于活动状态,就不断地模拟随机漫步
while True:
#创建一个RandomWalk实例
rw = RandomWalk(50000)
rw.fill_walk()
#设置绘图窗口的尺寸
plt.figure(dpi = 128,figsize=(10,6))
point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_values,rw.y_values,c = point_numbers,cmap = plt.cm.Blues,edgecolors='none',s=1)
#突出起点和终点
plt.scatter(0,0,c='green',edgecolors='none',s = 100)
plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',edgecolors='none',s=100)
#隐藏坐标轴
# plt.axes().get_xaxis().set_visible(False)
# plt.axes().get_yaxis().set_visible(False)
plt.show()
keep_running = input("Make another walk?(y/n):")
if keep_running == 'n':
break