如何使用Python制作数据展示中的表格图片?

2026-05-19 20:261阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1538个文字,预计阅读时间需要7分钟。

如何使用Python制作数据展示中的表格图片?

前言:前一篇文章介绍了如何将推送信息到企业微信群里,其中有一个项目推送的信息是使用Python自动生成的表格图片。本文将讲解如何使用Python生成表格图片。

选择一个合适的库:Python最大的优点之一就是拥有丰富的库资源。对于生成表格图片,我们可以选择`pandas`和`matplotlib`这两个库。

以下是使用Python生成表格图片的步骤:

1. 安装所需的库:bashpip install pandas matplotlib

2. 导入库:pythonimport pandas as pdimport matplotlib.pyplot as plt

3. 创建数据:pythondata={'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}df=pd.DataFrame(data)

4. 使用`matplotlib`生成表格图片:pythonfig, ax=plt.subplots(figsize=(10, 6))ax.axis('tight')ax.axis('off')ax.table(cellText=df.values, colLabels=df.columns, loc='center')

plt.show()

5. 保存图片:pythonplt.savefig('table.png')

以上步骤将生成一个名为`table.png`的表格图片。你可以根据需要调整图片的大小、样式等参数。

前言

前一篇文章介绍了推送信息到企业微信群里,其中一个项目推送的信息是使用Python自动生成的表格,本文来讲讲如何用Python生成表格图片。

选一个合适库

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

Pytable

项目地址:github.com/HiroshiARAKI/pytable

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

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

Plotly

官网地址:plotly.com/

后面找到了一个新的库: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, Tuple import pytab def 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, Tuple import plotly.graph_objects as go import plotly.io as pio def 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)) * 20 pio.kaleido.scope.default_height = 250 + len(cells[0]) * 20 fig = 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好一些,哈哈~

如何使用Python制作数据展示中的表格图片?

OK,就这样啦。

下次分享一些关于最近用Django开发后台的。

参考资料
  • python用prettytable输出漂亮的表格:linuxops.org/blog/python/prettytable.html
  • Plotly关于表格的文档:plotly.com/python/table/
  • Plotly关于导出图片的文档:plotly.com/python/static-image-export/
  • python将表格展示的数据生成图片:www.jianshu.com/p/3bfbf1bf0699
微信公众号:「程序设计实验室」 专注于互联网热门新技术探索与团队敏捷开发实践,包括架构设计、机器学习与数据分析算法、移动端开发、Linux、Web前后端开发等,欢迎一起探讨技术,分享学习实践经验。

本文共计1538个文字,预计阅读时间需要7分钟。

如何使用Python制作数据展示中的表格图片?

前言:前一篇文章介绍了如何将推送信息到企业微信群里,其中有一个项目推送的信息是使用Python自动生成的表格图片。本文将讲解如何使用Python生成表格图片。

选择一个合适的库:Python最大的优点之一就是拥有丰富的库资源。对于生成表格图片,我们可以选择`pandas`和`matplotlib`这两个库。

以下是使用Python生成表格图片的步骤:

1. 安装所需的库:bashpip install pandas matplotlib

2. 导入库:pythonimport pandas as pdimport matplotlib.pyplot as plt

3. 创建数据:pythondata={'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}df=pd.DataFrame(data)

4. 使用`matplotlib`生成表格图片:pythonfig, ax=plt.subplots(figsize=(10, 6))ax.axis('tight')ax.axis('off')ax.table(cellText=df.values, colLabels=df.columns, loc='center')

plt.show()

5. 保存图片:pythonplt.savefig('table.png')

以上步骤将生成一个名为`table.png`的表格图片。你可以根据需要调整图片的大小、样式等参数。

前言

前一篇文章介绍了推送信息到企业微信群里,其中一个项目推送的信息是使用Python自动生成的表格,本文来讲讲如何用Python生成表格图片。

选一个合适库

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

Pytable

项目地址:github.com/HiroshiARAKI/pytable

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

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

Plotly

官网地址:plotly.com/

后面找到了一个新的库: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, Tuple import pytab def 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, Tuple import plotly.graph_objects as go import plotly.io as pio def 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)) * 20 pio.kaleido.scope.default_height = 250 + len(cells[0]) * 20 fig = 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好一些,哈哈~

如何使用Python制作数据展示中的表格图片?

OK,就这样啦。

下次分享一些关于最近用Django开发后台的。

参考资料
  • python用prettytable输出漂亮的表格:linuxops.org/blog/python/prettytable.html
  • Plotly关于表格的文档:plotly.com/python/table/
  • Plotly关于导出图片的文档:plotly.com/python/static-image-export/
  • python将表格展示的数据生成图片:www.jianshu.com/p/3bfbf1bf0699
微信公众号:「程序设计实验室」 专注于互联网热门新技术探索与团队敏捷开发实践,包括架构设计、机器学习与数据分析算法、移动端开发、Linux、Web前后端开发等,欢迎一起探讨技术,分享学习实践经验。