我们用影刀把数据抓取下来,有时候会需要对这些数据进行可视化,那我们就又得去其他编辑器里面写可视化代码,这样会比较麻烦,那就可以直接在影刀里面把可视化封装成一条条指令,直接把我们抓取的的数据传进去这条指令进行可视化,这样就方便多了。
首先需要在影刀里面install matplotlib,import matplotlib(除了matplotlib,还可以用Seaborn)
然后在这个python模块里面用matplotlib包来写可视化代码,这里,就用双折线图来演示吧:
'''
x_data: x轴数据
x_name:x轴名称
y1_data:折线1数据
y2_data:折线2数据
y1_name:折线1名称
y2_name:折线1名称
y_description:y轴名称
title:图片标题
path:保存图片路径
'''
from matplotlib import pyplot as plt
import matplotlib
def zexain(x_data, x_name, y1_data, y2_data, y1_name, y2_name, y_description, title):
# 设置全局变量的中文字体
font = {'family': 'FangSong',
'weight': 'bold',
'size': '16'}
plt.rc('font', **font)
'''figure是图形图标的意思,在这里指的是我们画的图,通过实例化一个figure并且传递参数,
能够在后台自动使用该figure实例,在图像模糊时传入dip参数(每英寸像素点多少个),让图片更加清晰
figsizes传入的是宽和高
'''
fig = plt.figure(figsize=(20, 8), dpi=80)
# x轴数据,是一个可迭代的对象
x = x_data
# y轴数据,是一个可迭代的对象
y_1 = y1_data
y_2 = y2_data
# 传入x, y通过plot绘制出图
plt.plot(x, y_1, label=y1_name)
plt.plot(x, y_2, label=y2_name)
# 添加图例,折线的名字才可以显示出来
plt.legend()
x1 = ["{}时".format(i) for i in x_data]
plt.xticks(x, x1)
plt.yticks(range(min(y_2), max(y_1)+1))
plt.xlabel(x_name)
plt.ylabel(y_description)
plt.title(title)
plt.grid(alpha=0.9)
plt.savefig('{}\{}.png'.format(path,title))
我们把以上代码写到影刀的python模块中:
新建一个双折线流程,在这个流程里面调用平台python模块tool中的zexian这个函数,把我们的参数传进取就行:
这里因为传进去的数据是要可迭代的,所以在这里加了一个判断:
老样子,小眼睛要点开,然后发版:
那就模拟一个数据,来看看这个指令做出来的图片,就“一天中每隔两个小时北京与广州气温变化情况”吧:
运行结果:
查看图片:
除了这个双折线图,我们还可以做多个图,比如条形图,散点图,饼图等,方法和上面是一致的,这样,我们需要绘制什么图,一拉一拽就可以实现:
在影刀里面,除了对实时抓取的数据进行可视化,还可以读取数据库的数据,excel数据,表格数据等......