Skip to content

Add user friendly warning/error messages and helpers for log_plot()  #750

Open
@mnrozhkov

Description

@mnrozhkov

When people start using Live.log_plot(), they could struggle with getting an expected visualization because of 2 reasons

  1. log_plot() is very opinionated about the data format required for every template
  2. there are not user-friendly data checks and warning messages

Here are some ideas to help with DVCLive onboarding:

1. "Relax" requirements for data formats supported

For example, the bar_horizontal template expects smth like this:

datapoints = [
    {"name": "petal_width", "importance": 0.4},
    {"name": "petal_length", "importance": 0.33},
    {"name": "sepal_width", "importance": 0.24},
    {"name": "sepal_length", "importance": 0.03}
]

It would be cool to support other formats like:

  1. Pandas DataFrame
image
  1. Dict with automatically extracts keys as y' and values as x.`
{'petal_width': 0.4,
 'petal_length': 0.33,
 'sepal_width': 0.24,
 'sepal_length': 0.03}

2. Provide minimal sanity checks for data/configs provides
For example, if I run this code snippet:

from dvclive import Live

datapoints = [
   {"name": "petal_width", "importance": 0.4},
   {"name": "petal_length", "importance": 0.33},
   {"name": "sepal_width", "importance": 0.24},
   {"name": "sepal_length", "importance": 0.03}
]

with Live() as live:
   live.log_plot(
       "iris_feature_importance",
       datapoints,
       x="name",
       y="importance",
       template="bar_horizontal",
       title="Iris Dataset: Feature Importance",
       y_label="Feature Name",
       x_label="Feature Importance"
   )

I'll not get any error, but there is nothing showing in VSCode after that:
image

Reason? There is a mistake in x and y arguments assignment, the correct is y="name", x="importance". But, it's very easy to oversee this typo and spend a lot of time trying to figure it out.

How can we help?

  • check that the bar_horizontal template expects numerical data for x

3. Provide good warning messages and hints if formats incompatible
If we have data/args checks, we may tell about this in warning messages and this will help a lot to see smth like:

Data provided for x has str type bit numerical data type is expected

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions