使用方法

使用 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