前言

本文来讲讲如何用Python生成表格图片。

选一个合适库

Python最大的优点就是第三方库丰富,基本你要什么功能,都能找到别人实现好的库,几行代码一调用就完事了。

Pytable

最先找到的是日本人开发的pytab库,它是基于 matplotlib 来画图的,默认参数下生成的表格外观一般般,而且显示不了中文字符,字体也很小,效果不理想。

我一开始还抱着死磕的心态,把这个库的源码下载下来魔改,改了字体和大小,生成的表格终于能看了,但排版还是会出各种奇奇怪怪的问题,比如文字溢出单元格之类的,心累……

Plotly

官网地址: Plotly: The front end for ML and data science models

后面找到了一个新的库:plotly,官网的介绍是:

The front end for ML and data science models

专门为机器学习和数据科学设计的前端展示工具,单纯拿来画表格还算大材小用了~ 它是用网页来渲染的,看例子效果还可以,我就换成这个plotly试试,嗯,真的可以,那就这个了。

本文会分别介绍这两个库的使用,包括我魔改了pytab的地方。

(不过还是推荐plotly,网页渲染就是好)

pytab

首先安装

pip install pytab

然后我把画表格的代码封装成一个函数

import uuid
from typing import List, Dict, Optional, Tupleimport pytabdef draw_table(data: Dict[str, list]):"""画表格:param data: 数据格式 {'a': [1.0, 2.1, 3.5, 4.0, 2.0, 1.0, 2.1, 3.5, 4.0, 2.0, ],'b': [5.7, 6.1, 7.2, 8.3, 1.2, 5.7, 6.1, 7.2, 8.3, 1.2, ],}:return:"""# 设置字体,不然显示不了中文pytab.plt.rcParams["font.sans-serif"] = ["SimHei"]pytab.table( data=data,data_loc='center',# th_type='dark',th_c='#aaaaee',  # 设置表头背景颜色td_c='gray',  # 设置数据行背景颜色table_type='striped',figsize=(len(data.keys()), int(len(data.values()) / len(data.keys()) + 1)),# fontsize=18,)# pytab.show()temp_file = os.path.join(tempfile.gettempdir(), f'{uuid.uuid4().hex}.jpg')print(temp_file)pytab.save(temp_file)return temp_file

按照注释的这个数据格式,a和b是表头列名,后面的数组是每一列的数据,很好理解

{'a': [1.0, 2.1, 3.5, 4.0, 2.0, 1.0, 2.1, 3.5, 4.0, 2.0, ],'b': [5.7, 6.1, 7.2, 8.3, 1.2, 5.7, 6.1, 7.2, 8.3, 1.2, ],
}

画出来的表格是这样的

再来试试中文显示会怎么样

{'列1': [1.0, 2.1, 3.5, 4.0, 2.0, 1.0, 2.1, 3.5, 4.0, 2.0, ],'列2': [5.7, 6.1, 7.2, 8.3, 1.2, 5.7, 6.1, 7.2, 8.3, 1.2, ],
}

画出来是这样

有点丑吧,勉强能看

OK~ 关于pytab的就不多折腾了,毕竟上限就在这了

接下来看看plotly

plotly

首先安装

pip install plotly

话不多说,老规矩,我又是写成一个函数

import uuid
from typing import List, Dict, Optional, Tupleimport plotly.graph_objects as go
import plotly.io as piodef draw_table(headers: List[str], cells: List[list]):"""画表:param headers: header=dict(values=['A Scores', 'B Scores']):param cells: cells=dict(values=[[100, 90, 80, 90], [95, 85, 75, 95]]):return:"""pio.kaleido.scope.default_width = len(','.join(headers)) * 20pio.kaleido.scope.default_height = 250 + len(cells[0]) * 20fig = go.Figure(data=[go.Table(header=dict(values=headers), cells=dict(values=cells))])# fig.show()image_file = os.path.join(tempfile.gettempdir(), f'{uuid.uuid4().hex}.jpg')print('write image to', image_file)fig.write_image(image_file)return image_file

这次的参数格式更前面的pytab不一样,要传两个参数,都是数组类型

第一个是表头,第二个数组是单元格

先来个例子试试

draw_table(['列A', '列B'], [[100, 90, 80, 90], [95, 85, 75, 95]])

然后把上面函数代码里的 fig.show() 注释去掉,可以看到生成的表格图片效果

运行后可以发现自动打开了浏览器,因为这个库是使用网页来渲染表格的,效果如下

效果比前面那个pytab好一些,哈哈~

OK,就这样啦。

Python数据展示 - 生成表格图片相关推荐

  1. java生成表格图片(请假条为例)

    java生成表格图片(请假条) package table;import java.awt.Color; import java.awt.Font; import java.awt.Graphics; ...

  2. Python实战案例,PIL模块,Python实现自动化生成倒计时图片

    前言 利用Python实现自动化生成倒计时图片.废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: PIL模块: os模块: 以及一些Python自带的模块. 环 ...

  3. Python数据展示之雷达图

    Python数据展示之雷达图 简单实例 需求:雷达图方式验证霍兰德人格分析 输入:各职业人群结合兴趣的调研数据 输出:雷达图 使用库:matplotlib+numpy 代码 import numpy ...

  4. JS-JSON-获取JSON对象中的数据展示到表格里

    JS-JSON-获取JSON对象中的数据展示到表格里 1.要求 点击按钮,将学生信息展示到表格里,并显示总记录条数. 2.实现思路 创建JSON对象 先创建一个JSON对象data,有总人数total ...

  5. excel中如何et vb根据数据自动生成表格_如何实现excel与PPT互联互通(动态生成PPT)...

    因为经常要做周报.月报PPT,每次重复的的操作效率很低,这里整理了一套可以自动生成PPT的办法. 首先,大概思路是这样的.周报.月报这类经营分析类PPT一般都是由表格.图表以及分析文字组成的,整体结构 ...

  6. python验证码,python将PIL生成的图片进行base64编码并返回给前端浏览器

    我用python的PIL生成了验证码图片,需要将图片返回给前端浏览器,有两种返回方式.一种是返回response,另一种是将图片进行base64编码后返回. 注意:PIL生成验证码图片时,需要传入fo ...

  7. python数据展示库_收藏!盘点很实用的数据科学Python库

    数据科学是一门研究数据并从中挖掘信息的学科.它不要求自创或学习新的算法,只需要知道怎么样研究数据并解决问题.这一过程的关键点之一就在于使用合适的库.本文概述了数据科学中常用的.并且有一定重要性的库.在 ...

  8. html中循环生成表格数据,动态生成表格(简单实现)

    1.案例分析 1.利用对象生成假的数据,用来模拟数据库的数据. 2.核心算法:利用createElement生成表格(生成 tr , td ),注意逻辑关系. 1.css代码 table th { w ...

  9. vue 渲染JSON数据动态生成表格组件

    vue 通过渲染JSON数据动态生成表头及对应表格内容组件 <template><div id="viewDialog"><el-button typ ...

最新文章

  1. matplotlib pcolormech 用法
  2. Python 生产者与消费者(一)
  3. CentOS7下ntp安装步骤
  4. 本地数据源:使用firebird数据库
  5. Android开发之在程序右上角添加菜单选项
  6. 深入分析Java Web技术内幕pdf
  7. 站在BERT肩膀上的NLP新秀们:XLMs、MASS和UNILM
  8. 【算法学习】枚举与剪枝(一)
  9. go语言连接redis(已测试)
  10. [剑指offer]面试题3:二维数组中的查找
  11. iis7php怎么301重定向,iis7/8设置网站301重定向的方法
  12. oracle 数据库备份
  13. Dynamics 365-关于Solution的那些事(二)
  14. Linux学习总结(65)——Linux 服务器安全强化的七个步骤
  15. 当我们安装使用时,会出现eclipse启动不了,出现“Java was started but returned exit code=13......”的问题...
  16. inner join on, left join on, right join on讲解
  17. php 数据访问框架,PHP Ice框架数据库访问层- Ice Framework(PHP Web开发框架)
  18. pip 安装小白教程
  19. 美图嗅嗅+到意大利的水族馆里吃西餐
  20. KConfig、Makefile详解以及ARM平台Linux内核的编译

热门文章

  1. python图像拉伸
  2. APP和WAP手机网站的区别
  3. 你了解多少?空气净化器八大净化技术解读
  4. 解决 ImportError: No module named 'serial' 问题
  5. KDE:唯有失去了,才懂得珍惜
  6. 【Python】图像反转/反色的三种方法(pillow)
  7. 计算机学院迎新晚会目的,某学院计算机系迎新晚会策划书.doc
  8. 博通Broadcom SDK源码学习与开发11——Cable Modem DHCP管理
  9. 微信朋友圈奢侈品代购背后:圈子营销光明正大卖“假货”
  10. 硬件设计37之积分放大电路的继续研究