Skip to content

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

@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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions