matplotlib
1、安装matplotlib
① linux系统安装
# 安装matplotlib模块 $ sudo apt-get install python3-matplotlib # 如果是python2.7 执行如下命令 $ sudo apt-get install python-matplotlib # 如果你安装较新的Python,安装模块一乐的一些库 $ sudo apt-get install python3.5-dev python3.5-tk tk-dev $ sudo apt-get install libfreetype6-dev g++ # 再使用pip来安装模块 $ pip install --user matplotlib
② OS系统中安装
# 安装matplotlib模块 $ pip install --user matplotlib
③ windows系统中安装
# 安装matplotlib模块 $pip3 install matplotlib
进入终端执行import matplotlib 不报错表示执行成功
2、绘制简单的折线图
① 创建mpl_squares.py文件:
import matplotlib.pyplot as plt # 导入模块 squares = [1,4,9,16,25] # 指定列表Y坐标为列表中的值,X坐标为列表下标 plt.plot(squares) # 传入列表 plt.show() # 输出图像
绘图:
② 修改标签文字和线条粗细:
import matplotlib.pyplot as plt # 导入模块 squares = [1,4,9,16,25] # 指定列表Y坐标为列表中的值,X坐标为列表下标 plt.plot(squares,linewidth=5) # linewidth决定绘制线条的粗细 plt.title('Square Numbers',fontsize=24) # 标题 plt.xlabel('Vaule',fontsize=14) plt.ylabel('Square of Vaule',fontsize=14) plt.tick_params(axis='both',labelsize=14) # 刻度加粗 plt.show() # 输出图像
绘图:
③ 校正图形(设定X坐标):
import matplotlib.pyplot as plt # 导入模块 squares = [1,4,9,16,25] # 指定列表Y坐标为列表中的值 input_values = [1,2,3,4,5] plt.plot(input_values,squares,linewidth=5) # linewidth决定绘制线条的粗细 plt.title('Square Numbers',fontsize=24) # 标题 plt.xlabel('Vaule',fontsize=14) plt.ylabel('Square of Vaule',fontsize=14) plt.tick_params(axis='both',labelsize=14) # 刻度加粗 plt.show() # 输出图像
绘图:
3、绘制散点图
① 创建scatter_sqares.py:
import matplotlib.pyplot as plt plt.scatter(2,4,s=200) #X坐标2,Y坐标4 S=200 点大小 plt.title('Square Numbers',fontsize=24) # 标题 plt.xlabel('Vaule',fontsize=14) plt.ylabel('Square of Vaule',fontsize=14) plt.tick_params(axis='both',labelsize=14) # 刻度加粗 plt.show() # 输出图像
绘图:
② 绘制一系列点:
import matplotlib.pyplot as plt x_values = [1,2,3,4,5] # 指定X轴 y_values = [1,4,9,16,25] # 指定Y轴 plt.scatter(x_values,y_values,s=100) --snip--- plt.show() # 输出图像
绘图
③ 自动计算数据:
import matplotlib.pyplot as plt x_values = list(range(1,1001)) # 指定X轴 y_values = [x**2 for x in x_values] # 指定Y轴 plt.scatter(x_values,y_values,s=1,edgecolors='none') #edgecolors 删除数据点轮廓 plt.title('Square Numbers',fontsize=24) # 标题 plt.xlabel('Vaule',fontsize=14) plt.ylabel('Square of Vaule',fontsize=14) plt.axis([0,1100,0,1100000]) # 设置坐标取值范围 plt.tick_params(axis='both',labelsize=14) # 刻度加粗 plt.show() # 输出图像
绘图:
④ 自定义颜色
要修改数据点颜色,可向scatter()传递参数c,并将其设置为要使用的颜色的名称
plt.scatter(x_values,y_values,s=1,edgecolors='none',c='red') # 红色
你还可以使用RGB颜色模式自定义颜色,要指定自定义颜色,传入一个元祖,分别表示红色,绿色,蓝色,0~1范围,值越接近0,指定的颜色越深,值越接近1,指定的颜色越浅
plt.scatter(x_values,y_values,s=1,edgecolors='none',c=(0,0,0.8)) # 蓝色
颜色映射-渐变色
import matplotlib.pyplot as plt x_values = list(range(1,1001)) # 指定X轴 y_values = [x**2 for x in x_values] # 指定Y轴 plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,s=1,edgecolors='none',) # 从浅蓝色到深蓝色 plt.title('Square Numbers',fontsize=24) # 标题 plt.xlabel('Vaule',fontsize=14) plt.ylabel('Square of Vaule',fontsize=14) plt.axis([0,1100,0,1100000]) # 设置坐标取值范围 plt.tick_params(axis='both',labelsize=14) # 刻度加粗 plt.show() # 输出图像
绘图:
自动保存图标:
plt.savefig('squares_plot.png',bbox_inches='tight')
4、随机漫步
创建random_walk.py文件:
from random import choice class RandWalk(object): def __init__(self,count=5000): self.count = count self.x_list = [0] self.y_list = [0] def fill_walk(self): while len(self.x_list) < self.count: x_step = self.fill_step() y_step = self.fill_step() if x_step ==0 or y_step == 0: continue next_x = self.x_list[-1] + x_step next_y = self.y_list[-1] + y_step self.x_list.append(next_x) self.y_list.append(next_y) def fill_step(self): direction = choice([-1, 1]) distance = choice([2, 4, 6, 8, 10]) return direction*distance
创建rw_visual.py文件:
import matplotlib.pyplot as plt from random_walk import RandWalk rw = RandWalk() rw.fill_walk() point_numbers = list(range(rw.count)) plt.scatter(rw.x_list,rw.y_list,c=point_numbers,cmap=plt.cm.Blues,s=1) #颜色由浅转深 plt.show()
绘图:
调整尺寸适合屏幕、隐藏X轴Y轴,绘制起点和终点:
import matplotlib.pyplot as plt from random_walk import RandWalk rw = RandWalk() rw.fill_walk() point_numbers = list(range(rw.count)) plt.figure(dpi=128,figsize=(10,6)) # 设置显示图片大小 plt.scatter(rw.x_list,rw.y_list,c=point_numbers,cmap=plt.cm.Blues,s=1) # 颜色由浅转深 plt.scatter(0,0,c='green',edgecolors='none',s=10) # 起始颜色 plt.scatter(rw.x_list[-1],rw.y_list[-1],c='red',edgecolors='none',s=10) # 终点颜色 plt.axes().get_xaxis().set_visible(False) # 隐藏X轴 plt.axes().get_yaxis().set_visible(False) # 隐藏Y轴 plt.show()
绘图: