废话不多说,直接上代码,执行时有问题可留言。

依赖包

- python == 3.7.5
- numpy == 1.17.3
- pandas == 0.24.2
- matplotlib == 3.3.2
- pymysql == 0.9.2

draw_table.py

from matplotlib import pyplot as plt
import pymysql
import pandas as pd
from pandas import *
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']    # 指定默认字体:解决plot不能显示中文问题
mpl.rcParams['axes.unicode_minus'] = False               # 解决保存图像是负号'-'显示为方块的问题def pd_data():mysql_cn = pymysql.connect(host='mysqlHost', port=3306, user='mysqlUser',passwd='mysqlPassword', db='mysqlDb')sql ='sql语句'stu = pd.read_sql(sql, con=mysql_cn)mysql_cn.close()num = stu.shape[0]  # 获取行号return stu, numdef plot_table(row, col, vals):"""函数功能: 绘制二维表格,草图如下:-----------------|col1 |col2 |-----------------row1|value|value|-----------------row2|value|value|-----------------输入:row:string,(N)           #['row1', 'row2']col:string,(M)           #['col1', 'col2']vals:np, (N,M)"""R, C = len(row), len(col)idx = Index(row)df = DataFrame(np.random.randn(R, C), index=idx, columns=col)# 根据行数列数设置表格大小figC, figR = 2.25 * C, Rfig = plt.figure(figsize=(figC, figR))# 设置fig并去掉边框ax = fig.add_subplot(111, frameon=True, xticks=[], yticks=[])ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)ax.spines['bottom'].set_visible(False)ax.spines['left'].set_visible(False)the_table = plt.table(cellText=vals, rowLabels=df.index, colLabels=df.columns, colWidths=[0.1] * vals.shape[1],rowLoc='center', loc='center', cellLoc='center')the_table.set_fontsize(30)# 伸缩表格大小常数,可自行调节表格的宽高the_table.scale(figR / R * 1.2, figC / C * 2.0)# 设置每行随机颜色for ro in row:from DingMessage.colorDict import cnamesimport randomcolor = cnames.get(random.sample(cnames.keys(), 1)[0])for co in range(len(col)):the_table._cells[(int(ro), co)].set_facecolor(color)plt.savefig("test.jpg")# plt.show()if __name__ == '__main__':# 读库获取pd数据及总行数S,num = pd_data()# 设置表格titlecol = ["服务号","关注","分量","openid数","openID获取准确率","匹配广告来源openID数","微信广告销售线索","回传准确率","全流程数据准确性","广告来源占比"]# 自动匹配总行数,行数不统一会报错:ValueError: 'rowLabels' must be of length XXX(正确的行数)row = [str(i) for i in range(1,int(num+1))]# 转numpy数组vals = np.array(S)# 制表plot_table(row, col, vals)

颜色对照表:colorDict.py

cnames = {
'aliceblue':            '#DDDDDD',
'antiquewhite':         '#AAAAAA',
'aqua':                 '#888888',
'aquamarine':           '#FFB7DD',
'azure':                '#FF88C2',
'beige':                '#FF44AA',
'bisque':               '#FFCCCC',
'black':                '#FF8888',
'blanchedalmond':       '#FF3333',
'blue':                 '#FFC8B4',
'blueviolet':           '#FFA488',
'brown':                '#FF7744',
'burlywood':            '#FFDDAA',
'cadetblue':            '#FFBB66',
'chartreuse':           '#FFAA33',
'chocolate':            '#FFEE99',
'coral':                '#FFDD55',
'cornflowerblue':       '#FFFFBB',
'cornsilk':             '#FFFF77',
'crimson':              '#EEFFBB',
'cyan':                 '#DDFF77',
'darkblue':             '#CCFF33',
'darkcyan':             '#CCFF99',
'darkgoldenrod':        '#BBFF66',
'darkgray':             '#99FF33',
'darkgreen':            '#99FF99',
'darkkhaki':            '#66FF66',
'darkmagenta':          '#33FF33',
'darkolivegreen':       '#BBFFEE',
'darkorange':           '#77FFCC',
'darkorchid':           '#33FFAA',
'darkred':              '#AAFFEE',
'darksalmon':           '#77FFEE',
'darkseagreen':         '#33FFDD',
'darkslateblue':        '#99FFFF',
'darkslategray':        '#66FFFF',
'darkturquoise':        '#33FFFF',
'darkviolet':           '#CCEEFF',
'deeppink':             '#77DDFF',
'deepskyblue':          '#33CCFF',
'dimgray':              '#5599FF',
'dodgerblue':           '#99BBFF',
'firebrick':            '#CCDDFF',
'floralwhite':          '#CCCCFF',
'forestgreen':          '#9999FF',
'fuchsia':              '#CCBBFF',
'gainsboro':            '#9F88FF',
'ghostwhite':           '#D1BBFF',
'gold':                 '#B088FF',
'goldenrod':            '#9955FF',
'gray':                 '#E8CCFF',
'green':                '#D28EFF',
'greenyellow':          '#B94FFF',
'honeydew':             '#F0BBFF',
'hotpink':              '#E38EFF',
'indianred':            '#E93EFF',
'indigo':               '#FFB3FF',
'ivory':                '#FF77FF',
'khaki':                '#FF3EFF'}

当前路径下的test.jpg即为生成的图片,如有问题欢迎留言。

结果:

pandas读取数据库,将结果使用matplotlib绘制成二维表格图片相关推荐

  1. python 画三角函数_python,将三角函数绘制成二维数组

    看起来a, b, c是常量,z是a和{}之间的np.linspace.在a = 1 b = 2 c = 3 def triangle (z, a = a, b = b, c = c): y = np. ...

  2. 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图

    [Python]函数图像绘制:二维图像.三维图像.散点图.心形图 所有需要用的包 二维图像 三维图像 散点图绘制 心形图绘制 所有需要用的包 from mpl_toolkits.mplot3d imp ...

  3. python3 + opencv +pyzbar实时检测二维码 / 定位二维码,并绘制出二维码的框和提取二维码内容

    python3 + opencv +pyzbar实时检测二维码 / 定位二维码,并绘制出二维码的框和提取二维码内容 1 pyzbar二维码检测模块 1.1. pyzbar模块介绍 1.2 pyzbar ...

  4. java生成二维码,读取(解析)二维码图片

    二维码分为好多种,我们最常用的是qrcode类型的二维码,以下有三种生成方式以及解析方式: 附所需jar包或者js地址 第一种:依赖qrcode.jar import java.awt.Color; ...

  5. android Zxing二维码之读取手机二维码图片

    使用最新(注意这里是使用最新版的基于ZXing3.1封装:https://github.com/xuyisheng/ZXingLib) 功能是很全面的,扫描,生成,读取手机. 在这里只记录下读取手机相 ...

  6. 二维码图片扫描 绘制扫描的图片的边框(Swift)

    二维码图片扫描 绘制扫描的图片的边框 (简单的添加一张图片来识别的没有访问相簿) 以后可能会加上 想知道的请关注一下 @IBAction func detectorQRCode() {// .1 获取 ...

  7. 用C# GDI 绘制一张精美的分享二维码图片

    C# 用GDI 绘制一张精美的分享二维码图片 简单干脆,直接上代码 下面附带上面用到的一些方法 最后附带 最终生成效果 简单干脆,直接上代码 var key = "http://www.xx ...

  8. uniapp将二维码图片、文字绘制到canvas上并下载

    项目需求:页面展示带log的电子健康卡二维码并实现下载,下载的二维码图片里有还要有文字信息 页面展示: 下载的二维码: 1.使用uQRCode插件:https://ext.dcloud.net.cn/ ...

  9. qrcodejs2生成二维码,通过canvas绘制带边框+中间logo的二维码图片,下载二维码

    文章目录 一.通过qrcodejs2生成一个二维码 二.点击[下载配置服务器二维码]来下载二维码 1.通过canvas去绘制 边框+二维码+logo (1)为canvas增加绘制圆角矩形的方法(can ...

  10. xlsx.full.js读取Excel数据转换成二维数组,sheet_to_array

    xlsx.full.js读取Excel的sheet数据转换成二维数组,sheet_to_array 解析sheet数据为二维数组 测试方法 效果 鉴于js-xlsx.js没有XLSX.util.she ...

最新文章

  1. R语言数据类型及数据类型判断
  2. 为什么HR 20分钟就淘汰了一个前端高级工程师?
  3. lstm原理_Mamp;DL | LSTM:遗忘门、记忆门、输出门
  4. leetcode-120-三角形最小路径和
  5. java日志输出到kafka
  6. 仿ios便签软件_手机便签软件误删怎么恢复?
  7. 【知了堂学习笔记】数据库连接池简介,以及Eclipse中C3p0连接池的简单运用
  8. c++ 数组(array)
  9. HTML精仿ios相册,iOS开发-仿微信相册选择Demo
  10. jms pub/sub模型_JMS消息传递模型:点对点和发布/订阅
  11. 垃圾分类急上头?物联网卡来消愁
  12. 获取笔记本序列号(SN码)命令
  13. linux删除系统日志文件,Linux不小心删除日志文件syslog的解决方法
  14. 窃听信道模型中的保密通信性能研究
  15. json_encode转义中文问题
  16. 砸蛋程序php,基于JQuery+PHP编写砸金蛋中奖程序
  17. 网络爬虫(基于python的网络爬虫批量爬取图片)
  18. instant-ngp
  19. Android4.1
  20. 手机里面的照片被误删了怎么找回?

热门文章

  1. DoIP诊断技术一点通
  2. 深度解密HTTP通信细节
  3. xv6实验课程:Xv6和Unix实用程序
  4. Excel 脚本编写
  5. 微信小程序引入ColorUI
  6. 日本著名数学游戏专家中村义作教授提出这样一个问题:将2520个桔子分给六个儿子
  7. 第一二三章 PMP第六版读书笔记
  8. Redis 事务 实例
  9. 使用dea-toolbox进行数据包络分析
  10. de4dot不能反编译的混淆工具 ILProtector