使用方法

使用 paperplotlib(下称ppl) 只需要四步

  1. 初始化一个实例对象 graph
  1. 准备好你的数据, 将数据添加到 graph 中
  1. 根据需要适当修改属性
  1. 保存图片

ppl 为您简化了初始化, 基础配置, 配色, 数据位置等一些小细节, 您可以非常简单方便的绘制一张美观的数据图

总体介绍

ppl 提供了多数据图表的绘图

绘图 api 的使用方式非常类似, 分别对应四步

import paperplotlib as ppl

# 1. 初始化一个实例对象
graph = ppl.BarGraph()

# 2. 准备好你的数据, 将数据添加到 `graph` 中
x = [2, 4, 8, 16, 32]
y = [2, 4, 8, 16, 32]
graph.plot(x, y)

# 3. 根据需要适当修改属性
graph.x_label = "The number of data"
graph.y_label = "Throughput (Mbps)"

# 4. 保存图片
graph.save()

两个类均只有两个传入数据的接口: plot plot_2d

plot 用于绘制简单的一维数据, 如下所示, 传入 x,y 坐标即可

plot_2d 通常来说更为常用, 常见于论文 benchmark/workload 的数据结果中

plot_2d 的函数原型如下, 共有四个参数

def plot_2d(
        self,
        data: List[List[float]],
        group_names: List[str],
        column_names: List[str],
        emphasize_index: int = -1
    ):
    ...

一个简单易懂的示例如下:

import paperplotlib as ppl
import numpy as np

# 随机生成一个 5 x 7 的数据
a = 5
b = 7
y = np.random.randint(10, 100, size=(a, b))

# 初始化一个对象
graph = ppl.BarGraph()

# 传入数据/组/列的文字信息
group_names = [f"group {i}" for i in range(a)]
column_names = [f"column {i}" for i in range(b)]
graph.plot_2d(y, group_names, column_names)

# 调整x/y轴文字
graph.x_label = "The number of data"
graph.y_label = "Throughput (Mbps)"

# 保存图片
graph.save()

其中 emphasize_index 参数用于高亮某一列, 可以传入列的索引值

这通常应用在某一列是新的方法, 其他的是对比方法, 此时其他列将会选择相近的颜色而突出该列

配色

ppl 的配色采用偏冷色调的蓝色, 且是不建议调整的, 对于 1-7 列均可以采用统一的风格绘制

对于超过 7 种配色的情况, 采用渐变色处理

其他配置

初始化阶段可以传入一个参数来决定配色

style_id = 3
graph = ppl.BarGraph(style_id)

下图顺次对应 1 - 5

20240413204928

长图

对于有大量数据集结果的情况, 您可以将 width_picture 设置为 True, 即可生成一张长图, 可以横跨两栏放置, 类似如下的位置

20240408215030

graph.width_picture = True

x y 坐标

直接设置字符串即可

graph.x_label = "Workload"
graph.y_label = "Max QPS\nNormalized DDR 100%"

画一条横线

graph.add_line(50)

y 轴范围

传入一个元组类型设置范围

graph.y_lim = (0, 1.2)
zood