利用 plottable 美化表格 构建水质监测数据看板

在数据分析中,表格是最常用的展现形式之一,但普通的表格往往缺乏视觉吸引力,导致数据的可读性和理解性较差。plottable 是一个专门为 Matplotlib 设计的表格美化库,操作简便,能够轻松实现丰富的颜色渐变、行距调整等。最近,我尝试使用 plottable 制作水质站点的实时数据看板,记录整个操作过程如下。

结果预览

普通表格展现
image.png
Plottable 美化后
image.png

我只是做了简单的颜色渐变,行距等设置,这样能够更加直观的看到超标站点及因子的情况。

代码

首先准备实时数据表格,我这里是df_pivot。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import matplotlib  
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
import pandas as pd
import streamlit as st
from plottable import ColumnDefinition, ColDef, Table
from plottable.cmap import normed_cmap

fig, ax = plt.subplots(figsize=(18, 8), dpi=300)

cmap = LinearSegmentedColormap.from_list(
name="高锰酸盐指数", colors=["#ffffff", "#f2fbd2", "#c9ecb4", "#93d3ab", "#35b0ab"], N=256
)

col_defs = [ColumnDefinition(name="index", textprops={"ha": "left"}),
ColumnDefinition(name="高锰酸盐指数", cmap=normed_cmap(df_pivot["高锰酸盐指数"], cmap=matplotlib.cm.RdYlGn_r, num_stds=2.5)),
ColumnDefinition(name="氨氮", cmap=cmap),
ColumnDefinition(name="总磷", cmap=matplotlib.cm.Reds)]

tab = Table(df_pivot,
column_definitions=col_defs)

#fig.show()
st.pyplot(fig)

代码非常简单,plottable 生成的图片和 matplotlib 是一样的,所以可以直接用fig.show() 展示,也可以在 streamlit 中用st.pyplot(fig) 展示。
需要注意的是,渐变色如果直接调用类似matplotlib.cm.Reds,数据集需要时 0-1 之间,超过 1 需要用到LinearSegmentedColormap 进行自定义了。

plottable 不仅是用到色块渐变色,还有文本渐变色,文本符号等等,可以在官方 docs 中去进一步学习。

补充知识-Matplotlib 默认颜色映射

Matplotlib 提供了大量的颜色映射(colormaps),可以用于绘制图表中的颜色渐变。这些颜色映射分为几个类别,包括但不限于顺序(Sequential)、发散(Diverging)、定性(Qualitative)和循环(Cyclic)等。下面是一些常用的颜色映射:

顺序颜色映射(Sequential Colormaps)

  • Blues: 蓝色系列
  • Reds: 红色系列(你提到的)
  • Greens: 绿色系列
  • Oranges: 橙色系列
  • Purples: 紫色系列
  • Greys: 灰色系列
  • YlGn: 黄绿系列
  • YlOrBr: 黄橙棕系列
  • YlOrRd: 黄橙红系列
  • OrRd: 橙红系列
  • PuRd: 紫红系列
  • BuGn: 蓝绿系列
  • PuBu: 紫蓝系列
  • GnBu: 绿蓝系列
  • PuBuGn: 紫蓝绿系列
  • BuPu: 蓝紫系列
  • RdPu: 红紫系列
  • RdYlGn: 红黄绿系列

发散颜色映射(Diverging Colormaps)

  • RdBu: 红蓝对比
  • PRGn: 粉红绿对比
  • BrBG: 棕绿对比
  • PiYG: 桃红绿对比
  • RdGy: 红灰对比
  • RdYlBu: 红黄蓝对比
  • Spectral: 彩虹色系
  • coolwarm: 冷暖对比

定性颜色映射(Qualitative Colormaps)

  • Set1Set2Set3: 不同的色彩集合,适合于分类数据
  • Paired: 配对的颜色序列
  • Pastel1Pastel2: 柔和色调的色彩集合
  • Dark2: 深色调的色彩集合

循环颜色映射(Cyclic Colormaps)

  • twilight: 昼夜交替的效果
  • twilight_shifted: 移位的昼夜交替效果
  • hsv: 基于HSV颜色模型的循环颜色映射

如果你想使用反向颜色映射,可以简单地在颜色映射名称后面加上 _r,例如 RdYlGn_r 会得到从绿色到黄色再到红色的渐变。

参考资料

plottable 官方 docs

https://plottable.readthedocs.io/en/latest/index.html

BY

纯个人经验,如有帮助,请收藏点赞,如需转载,请注明出处。
微信公众号:环境猫 er
CSDN : 细节处有神明
个人博客: https://maoyu92.github.io/


利用 plottable 美化表格 构建水质监测数据看板
https://maoyu92.github.io/2024/10/11/04 经验分享/利用 plottable 美化表格 构建水质监测数据看板/
作者
陈文茂
发布于
2024年10月11日
许可协议