記事の全プロセスは、Shence apiを介してデータを取得し、破線のトレンドチャート、ビジネス関数、および単純なものを生成します。
- matplotlib
- リクエスト
- スレッド
データを取得する
def getData(start, end):
sql = "select count(distinct(stu_id)) as num, date from events where "+_os+" date between '"+start+"' and '"+end+"' and business='ai' group by date order by date"
print(sql)
data = {
'format': 'json', 'q': sql}
req_url = "https://"+url+"/api/sql/query?token="+token+"&project=production"
req_header = {
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
}
response = requests.post(req_url,data = data, headers = req_header)
rst = response.text.split('\n')
del rst[-1]
print('user'+str(len(rst)))
return rst
ここで、del rst [-1]は最後の空のデータを削除して、後で異常な解析が行われないようにすることに注意してください。
もう1つは、リクエストパッケージの学習です。
画像をレンダリングする
def showImage(xs,ys,hs):
plt.figure(num=1, figsize=(len(xs)//5,10))
plt.ylabel('count', color='red')
plt.xticks(rotation=45, fontsize=10)
plt.xlabel("date", fontsize=10)
#设置区间
plt.xlim(0,len(ys))
plt.ylim(0,max(xs)+100)
#设置显示间隔
y_major_locator=MultipleLocator(200) # y轴 0 200 400 600间隔都是200
x_major_locator=MultipleLocator(len(xs)//30)
#设置边距
plt.subplots_adjust(left=0.05, right=0.95, top=0.9, bottom=0.1)
plt.title(gstart+"~"+gend, fontsize=20)
# 这里是核心渲染的数据
plt.plot(ys,xs, color='green', linewidth=3, label='total')
plt.plot(ys,hs, color='red', linestyle='--', linewidth=2, label='support')
# --- end --
plt.legend() #显示图例
plt.savefig("人数-"+gstart+"~"+gend+".png", bbox_inches='tight')
# plt.show();
折れ線グラフ学習参照アドレスhttps://www.runoob.com/w3cnote/matplotlib-tutorial.html
写真虎絵猫糸
import threading
import time
class TaskThread(threading.Thread):
def __init__(self, func, args=()):
super(TaskThread, self).__init__()
self.func = func
self.args = args
def run(self):
self.result = self.func(self.args)
def getresult(self):
try:
return self.result
except Exception as ex:
print(ex)
return "ERROR"
写真には2行あり、比較データが2セットあります。別途リクエストすると全体で約20秒かかります。詳しく見ていきましょう。スレッド部分を読んだ後、写真を撮ります。猫のとそれを移動します。スレッドの約7〜9秒後。
def main():
usertask = taskthread.TaskThread(getUserTask, args=[gstart, gend])
helptask = taskthread.TaskThread(getHelpTask, args=[gstart, gend])
tasklist = [usertask,helptask]
usertask.start()
helptask.start()
resultlist = []
for task in tasklist:
task.join()
resultlist.append(task.getresult())
showResult(resultlist[0], resultlist[1])
if __name__ == "__main__":
_sts = int(time.time()*1000)
# user = getData(gstart, gend)
# helplist = getHelpData(gstart, gend)
# showResult(user, helplist)
main()
print('dur',int(time.time()*1000) - _sts)
- time.time()タイムスタンプフロートタイプの参照アドレスを取得しますhttps://ibeeger.com/blog/2018/11/13/python-time-md/
ソースコードはgithttps://github.com/ibeeger/python-learnに送信されました