pandas读取数据库,将结果使用matplotlib绘制成二维表格图片
废话不多说,直接上代码,执行时有问题可留言。
依赖包
- 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绘制成二维表格图片相关推荐
- 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. ...
- 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图
[Python]函数图像绘制:二维图像.三维图像.散点图.心形图 所有需要用的包 二维图像 三维图像 散点图绘制 心形图绘制 所有需要用的包 from mpl_toolkits.mplot3d imp ...
- python3 + opencv +pyzbar实时检测二维码 / 定位二维码,并绘制出二维码的框和提取二维码内容
python3 + opencv +pyzbar实时检测二维码 / 定位二维码,并绘制出二维码的框和提取二维码内容 1 pyzbar二维码检测模块 1.1. pyzbar模块介绍 1.2 pyzbar ...
- java生成二维码,读取(解析)二维码图片
二维码分为好多种,我们最常用的是qrcode类型的二维码,以下有三种生成方式以及解析方式: 附所需jar包或者js地址 第一种:依赖qrcode.jar import java.awt.Color; ...
- android Zxing二维码之读取手机二维码图片
使用最新(注意这里是使用最新版的基于ZXing3.1封装:https://github.com/xuyisheng/ZXingLib) 功能是很全面的,扫描,生成,读取手机. 在这里只记录下读取手机相 ...
- 二维码图片扫描 绘制扫描的图片的边框(Swift)
二维码图片扫描 绘制扫描的图片的边框 (简单的添加一张图片来识别的没有访问相簿) 以后可能会加上 想知道的请关注一下 @IBAction func detectorQRCode() {// .1 获取 ...
- 用C# GDI 绘制一张精美的分享二维码图片
C# 用GDI 绘制一张精美的分享二维码图片 简单干脆,直接上代码 下面附带上面用到的一些方法 最后附带 最终生成效果 简单干脆,直接上代码 var key = "http://www.xx ...
- uniapp将二维码图片、文字绘制到canvas上并下载
项目需求:页面展示带log的电子健康卡二维码并实现下载,下载的二维码图片里有还要有文字信息 页面展示: 下载的二维码: 1.使用uQRCode插件:https://ext.dcloud.net.cn/ ...
- qrcodejs2生成二维码,通过canvas绘制带边框+中间logo的二维码图片,下载二维码
文章目录 一.通过qrcodejs2生成一个二维码 二.点击[下载配置服务器二维码]来下载二维码 1.通过canvas去绘制 边框+二维码+logo (1)为canvas增加绘制圆角矩形的方法(can ...
- xlsx.full.js读取Excel数据转换成二维数组,sheet_to_array
xlsx.full.js读取Excel的sheet数据转换成二维数组,sheet_to_array 解析sheet数据为二维数组 测试方法 效果 鉴于js-xlsx.js没有XLSX.util.she ...
最新文章
- R语言数据类型及数据类型判断
- 为什么HR 20分钟就淘汰了一个前端高级工程师?
- lstm原理_Mamp;DL | LSTM:遗忘门、记忆门、输出门
- leetcode-120-三角形最小路径和
- java日志输出到kafka
- 仿ios便签软件_手机便签软件误删怎么恢复?
- 【知了堂学习笔记】数据库连接池简介,以及Eclipse中C3p0连接池的简单运用
- c++ 数组(array)
- HTML精仿ios相册,iOS开发-仿微信相册选择Demo
- jms pub/sub模型_JMS消息传递模型:点对点和发布/订阅
- 垃圾分类急上头?物联网卡来消愁
- 获取笔记本序列号(SN码)命令
- linux删除系统日志文件,Linux不小心删除日志文件syslog的解决方法
- 窃听信道模型中的保密通信性能研究
- json_encode转义中文问题
- 砸蛋程序php,基于JQuery+PHP编写砸金蛋中奖程序
- 网络爬虫(基于python的网络爬虫批量爬取图片)
- instant-ngp
- Android4.1
- 手机里面的照片被误删了怎么找回?