Python数据展示之生成表格图片

 更新时间:2022年04月10日 19:02:53   作者:代码输入中...  
这篇文章主要介绍了Python数据展示之生成表格图片,文章基于Python库的相关资料展开对主题的详细介绍,具有一定的参考价值需要的小伙伴可以参考一下

前言:

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

选一个合适库

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

Pytable

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

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

Plotly:官网地址

后面找到了一个新的:plotly,

官网的介绍是:

专门为机器学习和数据科学设计的前端展示工具,单纯拿来画表格还算大材小用了~ 它是用网页来渲染的,看例子效果还可以,我就换成这个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数据展示之生成表格图片的文章就介绍到这了,更多相关Python生成表格图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何基于matlab相机标定导出xml文件

    如何基于matlab相机标定导出xml文件

    这篇文章主要介绍了如何基于matlab相机标定导出xml文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • pd.to_datetime中时间object转换datetime实例

    pd.to_datetime中时间object转换datetime实例

    本文主要介绍了pd.to_datetime中时间object转换datetime实例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Pyspark读取parquet数据过程解析

    Pyspark读取parquet数据过程解析

    这篇文章主要介绍了pyspark读取parquet数据过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python简单实现矩阵的乘,加,转置和逆运算示例

    python简单实现矩阵的乘,加,转置和逆运算示例

    这篇文章主要介绍了python简单实现矩阵的乘,加,转置和逆运算,结合实例形式分析了Python针对矩阵的乘,加,转置和求逆等运算相关实现技巧,需要的朋友可以参考下
    2019-07-07
  • Python如何将给定字符串中的大写英文字母按以下对应规则替换

    Python如何将给定字符串中的大写英文字母按以下对应规则替换

    这篇文章主要介绍了Python如何将给定字符串中的大写英文字母按以下对应规则替换,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Python如何读取csv文件时添加表头/列名

    Python如何读取csv文件时添加表头/列名

    这篇文章主要介绍了Python如何读取csv文件时添加表头/列名,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • python对输出的奇数偶数排序实例代码

    python对输出的奇数偶数排序实例代码

    在本篇内容里小编给大家整理的是一篇关于python对输出的奇数偶数排序实例代码内容,有兴趣的朋友们可以参考下。
    2020-12-12
  • 使用Python快速实现文件共享并通过内网穿透技术公网访问

    使用Python快速实现文件共享并通过内网穿透技术公网访问

    数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有广泛的应用,对于个人用户也有很强的实用意义,今天,笔者就为大家介绍,如何使用python这样的简单程序语言,在自己的电脑上搭建一个共享文件服务器,需要的朋友可以参考下
    2023-10-10
  • Python实现鸡群算法的示例代码

    Python实现鸡群算法的示例代码

    鸡群算法,缩写为CSO(Chicken Swarm Optimization),尽管具备所谓仿生学的背景,但实质上是粒子群算法的一个变体。本文将利用Python语言实现这一算法,感兴趣的可以了解一下
    2022-11-11
  • python使用matplotlib绘制折线图

    python使用matplotlib绘制折线图

    这篇文章主要为大家详细介绍了python使用matplotlib绘制折线图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04

最新评论