使用 paperplotlib(下称ppl) 只需要四步
graph
graph
中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
对于有大量数据集结果的情况, 您可以将 width_picture
设置为 True
, 即可生成一张长图, 可以横跨两栏放置, 类似如下的位置
graph.width_picture = True
直接设置字符串即可
graph.x_label = "Workload"
graph.y_label = "Max QPS\nNormalized DDR 100%"
graph.add_line(50)
传入一个元组类型设置范围
graph.y_lim = (0, 1.2)