Edit on GitHub

plots modify

Modify display properties of plot metrics files.


usage: dvc plots modify [-h] [-q | -v] [-t <name_or_path>] [-x <field>]
                        [-y <field>] [--no-header] [--title <text>]
                        [--x-label <text>] [--y-label <text>]
                        [--unset [<property> [<property> ...]]]

positional arguments:
  target                Metrics file to set properties to


It might be not convenient for users or automation systems to specify all the display properties (such as y-label, template, title, etc.) each time plots are generated with dvc plot show or dvc plot diff. This command sets (or unsets) default display properties for a specific metrics file.

The path to the metrics file target is required. It must be listed in a dvc.yaml file (see the --plots option of dvc run). dvc plots modify adds the display properties to dvc.yaml.

Property names are passed as options to this command (prefixed with --). These are based on the full Vega specification.

Note that a secondary use of this command is to convert output or simple dvc metrics file into a plots file (see an example).


  • -t <name_or_path>, --template <name_or_path> - set a default plot template.
  • -x <field> - set a default field or column name (or number) from which the X axis data comes from.
  • -y <field> - set a default field or column name (or number) from which the Y axis data comes from.
  • --x-label <text> - set a default title for the X axis.
  • --y-label <text> - set a default title for the Y axis.
  • --title <text> - set a default plot title.
  • --unset [<property> [<property> ...]] - unset one or more display properties. Use the property name(s) without -- in the argument sent to this option.
  • --no-header - lets DVC know that the target CSV or TSV does not have a header. A 0-based numeric index can be used to identify each column instead of names.
  • -h, --help - prints the usage/help message, and exit.
  • -q, --quiet - do not write anything to standard output. Exit with 0 if no problems arise, otherwise 1.
  • -v, --verbose - displays detailed tracing information.


The initial plot was showing the last column of CSV file by default which is loss metrics while accuracy is expected as Y axis:

$ dvc plots show logs.csv

Changing the y-axis to accuracy:

$ dvc plots modify logs.csv -y accuracy
$ dvc plots show logs.csv

Note, a new field y was added to dvc.yaml file for the plot. Please do not forget to commit the change in Git if the modification needs to be preserved.

- logs.csv:
    cache: false
    y: accuracy

Changing the plot title and x-label:

$ dvc plots modify logs.csv --title Accuracy -x epoch --x-label Epoch
$ dvc plots show logs.csv

Two new fields were added to dvc.yaml: x-label and title:

  - plots.csv:
      cache: false
      y: accuracy
      x_label: epoch
      title: Accuracy

Example: Template change

dvc run —plots file.csv … command assign the default template that needs to be changed in many cases. A simple command changes the template:

$ dvc plots modify classes.csv --template confusion

Example: Convert any output into a plot

Let's take an example evaluate stage which has logs.csv as an output. We can use dvc plots modify to convert the logs.csv output file into a plots file, and then confirm the changes that happened in dvc.yaml:

$ dvc plots modify logs.csv
  cmd: python src/evaluate.py
    - src/evaluate.py
-   outs:
-   - logs.csv
    - scores.json
+   - logs.csv

🐛 Found an issue? Let us know! Or fix it:

Edit on GitHub

Have a question? Join our chat, we will help you:

Discord Chat