def StartDraw(self):canvas = plt.figure().canvasplt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号win = np.array(self.win)drawn = np.array(self.drawn)lost = np.array(self.lost)crwin = np.array(self.crwin)crdrawn = np.array(self.crdrawn)crlost = np.array(self.crlost)changeTime = np.array(self.changeTime)crChangeTime = np.array(self.crChangeTime)# 获取开始时间和终止时间startDay = min(crChangeTime[0], changeTime[0])endDay = max(crChangeTime[-1], changeTime[-1])# 设置外边框的样式及长度plt.figure(facecolor='gray', edgecolor='white', figsize=(24,12))ax = plt.gca()# 设置内边框样式ax.patch.set_facecolor("black")  # 设置ax1区域背景颜色ax.patch.set_alpha(10)# 设置ax1区域背景颜色透明度# 去掉脊柱(坐标系)ax.xaxis.set_major_formatter(mdate.DateFormatter('%y-%m-%d %H:%M',))  # 横坐标标签显示的日期格式plt.xticks(pd.date_range(startDay, endDay, freq=self.freq), rotation=45) # 横坐标范围ax.spines['top'].set_visible(False)  # 去掉上边框ax.spines['right'].set_visible(False)  # 去掉右边框ax.spines['left'].set_visible(False)  # 去掉上边框plt.ylabel('odds change', color='black', size='15')plt.xlabel('with the time', color='black', size='15')# 标题plt.title(self.VS)# 设置图形注释,参数依次为注释文字,箭头位置,箭尾位置。在箭头参数中参数为箭头颜色plt.annotate('win', xy=(-0.05, win[0] - 0.15), color='#02F8FB')plt.annotate('drawn', xy=(-0.05, drawn[0] - 0.15), color='#02F8FB')plt.annotate('lost', xy=(-0.05, lost[0] - 0.15), color='#02F8FB')plt.plot(changeTime, win, linestyle='dashdot', marker='^', linewidth=0.5, color='#29FF16', label='win')plt.plot(changeTime, drawn, linestyle='dashdot', marker='^', linewidth=0.5, color='#7CFFF2', label='drawn')plt.plot(changeTime, lost, linestyle='dashdot', marker='^', linewidth=0.5, color='#FF0913', label='lost')plt.annotate('win', xy=(-0.05, win[0] - 0.15), color='#02F8FB')plt.annotate('drawn', xy=(-0.05, drawn[0] - 0.15), color='#02F8FB')plt.annotate('lost', xy=(-0.05, lost[0] - 0.15), color='#02F8FB')plt.plot(crChangeTime, crwin, linestyle='-', linewidth=1, color='#29FF16', label='crwin')plt.plot(crChangeTime, crdrawn, linestyle='-', linewidth=1, color='#7CFFF2', label='crdrawn')plt.plot(crChangeTime, crlost, linestyle='-', linewidth=1, color='#FF0913', label='crlost')# 开启网格plt.grid(True)plt.grid(color='white', linestyle='--', linewidth=1, alpha=0.2)# 绘制图注位置plt.legend(bbox_to_anchor=(0.005, 1), loc=3, borderaxespad=0)fileName = self.crChangeTime[-1].strftime('%Y-%m-%d') + ' ' + self.VS+'.png'##一定要注意这一句,不然canvas获取不到图片流canvas = plt.get_current_fig_manager().canvas# 获取流数据方便上传到Minio# 获取输入输出流对象buffer = io.BytesIO()# 将画布上的内容打印到输入输出流对象canvas.print_png(buffer)# 获取流的值IODataForMinio = buffer.getvalue()# 正式上传Miniobuffer.write(IODataForMinio)ioLength = io.BytesIO(IODataForMinio).getbuffer().nbytesfileName = self.crChangeTime[-1].strftime('%Y-%m-%d') + ' ' + self.VS + '.png'UploadMinio(io.BytesIO(IODataForMinio),ioLength,fileName)buffer.close()
 canvas = plt.get_current_fig_manager().canvas

参考文章

python canvas获取的图片流数据为空相关推荐

  1. vue获取图片流数据并展示

    vue获取图片流数据并展示 一.问题描述 二.数据获取 三.数据展示 1.window.URL.createObjectURL() (1)URL (2)createObjectURL 2.封装blob ...

  2. Python爬虫获取基金持仓股票数据

    Python爬虫小实战 . 通过Python爬虫获取基金持仓股票数据,按照基金持仓金额对股票进行排行,并储存在本地数据库. from urllib import request from bs4 im ...

  3. 【转】Python之获取每日涨停板股票数据并绘制K线图!

    利用tushare财经数据接口获取股市进行数据分析.并可视化的案例 1.导入所需要的库 import os import pandas as pd import tushare as ts impor ...

  4. Python之获取每日涨停板股票数据并绘制K线图!

    利用tushare财经数据接口获取股市进行数据分析.并可视化的案例 1.导入所需要的库 import os import pandas as pd import tushare as ts impor ...

  5. python tabula获取pdf的列表数据

    tabula的功能比camelot更加强大,可以同时对多个表格数据进行提取.项目的具体地址请参考:https://github.com/chezou/tabula-py 安装 tabula的安装是非常 ...

  6. python suds 获取webService封装的数据

    1.suds的client获取webService封装的数据,URL为http:// **?WSDL形式 from suds.client import Client import sys def g ...

  7. 【天勤量化】python多进程获取所有期货分钟数据和股票日线数据

    文章目录 1. 天勤量化不同版本区别 2. 多进程获取期货分钟数据和股票日线数据 3. 多进程获取期货分钟数据并且每日实时更新历史数据 4.常见问题 4.1 ray包无法安装 4.2 免费账户能否获得 ...

  8. python 爬虫 获取bilibili search搜索数据,返回json格式

    话不多说直接上代码 测试用例 : 搜索java为关键词的 时长在60分钟以上的视频 import requests import json import osheaders = {"user ...

  9. python numba 转灰度图_Python数据预处理:Dask和Numba并行化加速!

    如果你善于使用Pandas变换数据.创建特征以及清洗数据等,那么你就能够轻松地使用Dask和Numba并行加速你的工作.单纯从速度上比较,Dask完胜Python,而Numba打败Dask,那么Num ...

最新文章

  1. 一文解读Tensor到底是个啥玩意儿?(附代码)
  2. MYSQL数据库导入数据时出现乱码的解决办法
  3. 世上描述宇宙最精确的科学理论
  4. linux查看注册表信息,linux下登录档及其查看方法
  5. 联万物,+智能,为行业,华为云升级OceanConnect IoT全栈云服务
  6. 简述php语言的特点是_PHP语言有哪些优势和特点(一)
  7. 一条汇编指令是如何在计算机的硬件中进行执行的
  8. 【渝粤教育】国家开放大学2018年秋季 0300-22T图形创意 参考试题
  9. 190728-flink官方文档阅读和实战记录
  10. python爬虫100例教程 python爬虫实例100例子
  11. 楷书书法规则_书法结构|楷书10大结构原则详解之3--主笔突出原则
  12. 如何获取 Boot Camp for Windows(Mac电脑装Windows后如何安装驱动)
  13. App Store审核规范
  14. GB2312和UTF-8
  15. 高德地图应用:接口调用权限安全升级( web端API接口加密)(文档篇)
  16. c++程序员书籍推荐
  17. python中sticky_vue-sticky组件详解
  18. 三星R463无线网卡驱动,声卡驱动,FN快捷键驱动,Easy_Display_Manager
  19. 12312312312313
  20. 淘宝、天猫API接口

热门文章

  1. ssy-publish
  2. kafka消息存储原理及查询机制
  3. 参考例子,学习FuncT, TResult委托
  4. 高德地图-搜索服务-POI搜索
  5. C#静态类 转载:(原文:http://www.cnblogs.com/chenlulouis/ )
  6. bailian 2754八皇后
  7. PHP (20140508)
  8. C++leetcode找出两个有序数组的中位数(2)
  9. tensorflow中的关键字global_step使用
  10. SUID SGID LINUX 权限安全设置