美文网首页
创建华丽的数据展示表格:使用Plottable库让DataFra

创建华丽的数据展示表格:使用Plottable库让DataFra

作者: 吉祥鸟hu | 来源:发表于2023-08-27 09:34 被阅读0次

最近github上发现了一个库(plottable),可以用简单的方式就设置出花哨的 DataFrame 样式。

github上的地址:https://github.com/znstrider/plottable

1. 安装

通过 pip 安装:

pip install plottable

2. 行的颜色

使用 plottable的API,调整背景和字体的颜色非常方便。

2.1. 奇偶行不同颜色

奇偶行设置不同的颜色,让表格看起来有层次感。

import numpy as np

from plottable import Table

data = np.random.random((5, 5))
data = data.round(2)
df = pd.DataFrame(data, columns=["A", "B", "C", "D", "E"])
tbl = Table(df,
            odd_row_color="#f0f0f0",
            even_row_color="#e0f6ff"
           )
image.png

2.2. 背景和字体颜色

对于复杂的显示要求,可以逐行设置背景色和字体的颜色。

import numpy as np

from plottable import Table

data = np.random.random((5, 5))
data = data.round(2)
df = pd.DataFrame(data, columns=["A", "B", "C", "D", "E"])
tbl = Table(df)
tbl.rows[0].set_facecolor("red")
tbl.rows[0].set_fontcolor("white")

tbl.rows[1].set_facecolor("blue")
tbl.rows[1].set_fontcolor("white")

tbl.rows[2].set_facecolor("green")
tbl.rows[2].set_fontcolor("white")

tbl.rows[3].set_facecolor("gray")
tbl.rows[3].set_fontcolor("white")

tbl.rows[4].set_facecolor("purple")
tbl.rows[4].set_fontcolor("white")
image.png
上例中每一行的背景设置了不同的颜色,字体都设置为白色。

3. 值的显示

调整颜色,字体属于基本的设置,plottable强大之处在于可用图形化的方式来显示数据,
让我们可以一眼看出数据的大小和差距。

比如,下面的示例用 ColumnDefinition 来使用 plottable内置的数据显示方式。

import numpy as np

from matplotlib.colors import LinearSegmentedColormap

from plottable import ColumnDefinition, Table
from plottable.formatters import decimal_to_percent
from plottable.plots import bar, percentile_bars, percentile_stars, progress_donut

data = np.random.random((5, 5))
data = data.round(2)
df = pd.DataFrame(data, columns=["A", "B", "C", "D", "E"])

print(df) # 显示原始数据

cmap = LinearSegmentedColormap.from_list(
    name="bugw", colors=["#ffffff", "#f2fbd2", "#c9ecb4", "#93d3ab", "#35b0ab"], N=256
)
tab = Table(
    df,
    textprops={"ha": "center"},
    column_definitions=[
        ColumnDefinition("index", textprops={"ha": "left"}),
        ColumnDefinition("A", plot_fn=percentile_bars, plot_kw={"is_pct": True}),
        ColumnDefinition(
            "B", width=1.5, plot_fn=percentile_stars, plot_kw={"is_pct": True}
        ),
        ColumnDefinition(
            "C",
            plot_fn=progress_donut,
            plot_kw={"is_pct": True, "formatter": "{:.0%}"},
        ),
        ColumnDefinition(
            "D",
            width=1.25,
            plot_fn=bar,
            plot_kw={
                "cmap": cmap,
                "plot_bg_bar": True,
                "annotate": True,
                "height": 0.5,
                "lw": 0.5,
                "formatter": decimal_to_percent,
            },
        ),
    ],
)

原始数据显示:

image.png

plottable强化之后显示:

image.png

4. 图文混合

最后,演示一个通过 plottable 在表格中插入图片的示例。
其中数据来源是 2023 王者荣耀春季赛各个战队的数据

主要为了演示表格中插入图片(图片是各个战队的logo),所以只挑选了4个列来展示。

import pandas as pd
import numpy as np

import matplotlib
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

from plottable import ColumnDefinition, Table
from plottable.formatters import decimal_to_percent
from plottable.plots import bar, percentile_bars, percentile_stars, progress_donut
from plottable.plots import circled_image

matplotlib.rcParams["font.sans-serif"] = ["Microsoft YaHei Mono"]
matplotlib.rcParams["axes.unicode_minus"] = False

df = pd.read_csv("d:/share/data.csv")
df = df.set_index("排名")
df["胜率"] = df["胜场"] / df["比赛场次"]
df["logo"] = "d:/share/wzry-logos/" + df["战队"] + ".png"
df = df.drop(columns=["胜场", "比赛场次", "场均KDA"])

fig, ax = plt.subplots(figsize=(12, 12))

col_defs = [
        ColumnDefinition("排名", textprops={"ha": "left"}),
        ColumnDefinition(
            name="logo",
            title="",
            textprops={"ha": "center"},
            width=0.5,
            plot_fn=circled_image,
        ),
        ColumnDefinition("战队", textprops={"ha": "center"}),
        ColumnDefinition(
            "胜率",
            plot_fn=progress_donut,
            plot_kw={"is_pct": True, "formatter": "{:.0%}"},
        ),
    ]

tbl = Table(
    df,
    ax=ax,
    textprops={"ha": "center", "fontsize": 20},
    column_definitions=col_defs,
)
image.png

上面示例中用到的数据和logo图标分享在:
https://url11.ctfile.com/f/45455611-870642180-a094e4?p=6872 (访问密码: 6872)

有兴趣可以试试看上面的示例,或者继续深入探索 plottable 的强大显示功能。

本文由mdnice多平台发布

相关文章

  • mysql基本操作

    创建数据库、使用数据库、查看表格: 创建表格: 插入数据到表格: 查看数据: 创建索引: 使用索引的好处: 右侧通...

  • 数据库系统原理 SQL 杂记

    进入数据库 创建数据库 显示数据库 删除数据库 使用数据库 创建表格 整型 int 浮点型 double 布尔型 ...

  • 2.5登录用户验证功能设计

    任务目标 完成登录界面与数据库的连接访问 1.结果展示 2.创建数据库以及表格 (1)创建智慧社区商超管理系统数据...

  • mysql 常用命令

    使用mysql workbench 创建数据库,获得数据库语句,然后在命令行里面运行。 创建数据库 展示说有的数据...

  • Mongo

    q启动 展示 查看 使用或创建 查看数据库专题 查看数据库下集合数 删除数据库 创建集合 删除集合 添加多个

  • 一.开始使用数据库MongoDB

    开始使用数据库MongoDB 给数据库命名: 在文件下创建表单: 往数据库中写入数据: 展示数据库中的数据: 数据...

  • pandas使用方法及相关函数记录1

    pandas使用方法记录总结 基本操作记录 查看pandas版本 查看pandas及相关库版本 创建DataFra...

  • mysql+models

    cmd启动mysql 1.建立数据库 显示当前存在的数据库 删除一个数据库 2. 创建表格 使用数据库 删除数据库...

  • SmartTable 简单易用的表格框架

    SmartTable 简单易用的表格框架 表格形式适合大量数据的展示(如数据库数据)。 SmartTable 是基...

  • mysql数据库sql语句创建数据库,创建数据表,修改表信息

    创建数据库 create database 数据库名称 展示数据库 show databases 展示数据表 s...

网友评论

      本文标题:创建华丽的数据展示表格:使用Plottable库让DataFra

      本文链接:https://www.haomeiwen.com/subject/qmxwmdtx.html