自定义多线图表
wandb.plot.line_series()的用法和范例
Created on February 18|Last edited on July 12
Comment
方法:wandb.plot.line_series()
将一个自定义线序列图表记录到本地W&B:
wandb.log({"my_custom_id" : wandb.plot.line_series(xs=[0, 1, 2, 3, 4],ys=[[10, 20, 30, 40, 50], [0.5, 11, 72, 3, 41]],keys=["metric Y", "metric Z"],title="Two Random Metrics",xname="x units")})
这一自定义图表在同一个x-y轴坐标系上呈现多条线或者多串不同的x-y坐标对。如下两个示例使用默认设置和随机数据。你可以平移放大图表来查看细节(其中有些线靠得太近,没法区分开来)。
Random data sample
2
基本用法范例
我这里是一个时间序列方面的TensorFlow教程,使用了一个天气数据集,里面有14个特征数据,包括温度、气压和湿度等。完整数据的一个小子集被载入到Pandas数据框,命名为 climate_data。
columns = ['T (degC)', 'p (mbar)', 'rho (g/m**3)']num_steps = 200xs = [ i for i in range(num_steps) ]ys= [ climate_data[c][:num_steps] for c in columns ]wandb.log({"weather_sample" : wandb.plot.line_series(xs=xs,ys=ys,keys=columns,title="Weather Metrics")})
要注意,x和y的数据必须完全匹配。你可以用一串xs匹配多串ys,或者分别为每串ys提供单独的一串xs。如果这些气温/气压/空气密度测试结果取自不同时间,那么我们可以提供三串不同的x值。点这里查看线序列图表的完整定义。
所遵循的步骤:
- 对于你要绘制的每个线序列,找到x值和y值,以及每个序列的名称(该项可选)。
- 按照同样的顺序,把x值列表传入xs,把y值列表传入ys,把可选名称传入keys。
- 把这些参数传递给wandb.plot.line_series()(图表标题和x轴标题可选),从而在指定键下创建图表(上方的键为weather_sample)。为了将多个运行项可视化至同一个图表上,则保持该图表键为常量。要注意,表本身也会被记录到工作区的“Media(媒体)”部分,位于weather_sample_table下面。
Sample time series data
1
自定义用法
利用Vega可视化语法可以轻而易举地自定义线序列图表。此处我在同一个坐标系中比较多个时间片,这样可以更好地观察到数据中的差异。若要查看完整的Vega配置(每个图表的定义),可将鼠标移至图表右上角并点击“眼睛”图标。
一些简单的修改:
- 切换线型标注方法,使颜色与指标键对应,笔画与记录的时间片对应。切换strokeDash和color下面的field值,使strokeDash包含"field": "name",color包含"field": "${field:lineKey}"。移除条目scale。
- 编辑主标题、图例和坐标轴,使其更具描述性:在encoding下的相关字段中添加"title": "Your Title"。
Randomized time slices
3
更多示例:记录不同的x值
在简单情况下,多串y值映射到一串x值。而此处我以不同的频率采集了三个气压指标,展现一个稍微更高级的场景:对应每一串y值分别传入一串x值。我还把"type" : "line"改为"type" : "point",这样可以比较清楚地区分x值。
在底下一行图表中,左下图根据样本Id为数据着色,右下图根据指标类型为数据着色,通过两图对比,你可以对比可视化效果/感知分组优势。
Vapor pressure data
4
如何编辑预设以绘制自定义图表
- 从一个现有图表类型开始。鼠标移至右上角,点击自定义图表>铅笔图标>按钮“编辑”,在左上方。
- 可以选择在右侧下拉菜单中填写自定义标题等文本字段。
- 对修改满意了之后,可以为自定义图表保存一个副本,以备日后使用。点击左上方的“保存为”,然后为自己的图表类型取一个描述性名称(你可以同时编辑描述内容,这样可以方便以后做参考!),以后想用的时候,就可以在你的用户/团队实体中找到。
- 好处:当你把修改的“自定义图表”保存为预设之后,就可以直接从Python向其记录数据,即通过wandb.plot_table(vega_spec_name="your_username/your_custom_preset_name")。点这里查看更多详细信息和范例。
修改过的Vega配置
该版本的线序列配置为线条着色是根据指标,而不是根据运行项,并且包含指定标题。
{"$schema": "https://vega.github.io/schema/vega-lite/v4.json","description": "A plot for an arbitrary number of lines","data": {"name": "wandb"},"title": "Climate Data Sample","layer": [{"selection": {"grid": {"type": "interval","bind": "scales"}},"mark": {"type": "line", "interpolate": "linear"},"encoding": {"x":{"field": "${field:step}","type": "quantitative","title": "Time step of measure"},"y": {"field": "${field:lineVal}","title": "Value in indicated units","type": "quantitative"},"color": {"type": "nominal","field": "${field:lineKey}","title" : "Units of measure"},"strokeDash": {"type": "nominal","field": "name","title" : "Sample id"}}}]}
问答
感谢大家阅读!我们希望本文能帮助大家构建独特又引人注目的自定义图表。如有任何问题,请在下方留言。
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.