def test_plot_csv_one_column(tmp_dir, scm, dvc, run_copy_metrics): # no header metric = [{"val": 2}, {"val": 3}] _write_csv(metric, "metric_t.csv", header=False) run_copy_metrics("metric_t.csv", "metric.csv", plots_no_cache=["metric.csv"]) props = { "header": False, "x_label": "x_title", "y_label": "y_title", "title": "mytitle", } plot_string = dvc.plots.show(props=props)["metric.csv"] plot_content = json.loads(plot_string) assert plot_content["title"] == "mytitle" assert plot_content["data"]["values"] == [ { "0": "2", PlotData.INDEX_FIELD: 0, "rev": "workspace" }, { "0": "3", PlotData.INDEX_FIELD: 1, "rev": "workspace" }, ] assert plot_content["encoding"]["x"]["field"] == PlotData.INDEX_FIELD assert plot_content["encoding"]["y"]["field"] == "0" assert plot_content["encoding"]["x"]["title"] == "x_title" assert plot_content["encoding"]["y"]["title"] == "y_title"
def test_plot_csv_multiple_columns(tmp_dir, scm, dvc, run_copy_metrics): metric = [ OrderedDict([("first_val", 100), ("second_val", 100), ("val", 2)]), OrderedDict([("first_val", 200), ("second_val", 300), ("val", 3)]), ] _write_csv(metric, "metric_t.csv") run_copy_metrics("metric_t.csv", "metric.csv", plots_no_cache=["metric.csv"]) plot_string = dvc.plots.show()["metric.csv"] plot_content = json.loads(plot_string) assert plot_content["data"]["values"] == [ { "val": "2", PlotData.INDEX_FIELD: 0, "rev": "workspace", "first_val": "100", "second_val": "100", }, { "val": "3", PlotData.INDEX_FIELD: 1, "rev": "workspace", "first_val": "200", "second_val": "300", }, ] assert plot_content["encoding"]["x"]["field"] == PlotData.INDEX_FIELD assert plot_content["encoding"]["y"]["field"] == "val"
def test_plot_csv_choose_axes(tmp_dir, scm, dvc, run_copy_metrics): metric = [ OrderedDict([("first_val", 100), ("second_val", 100), ("val", 2)]), OrderedDict([("first_val", 200), ("second_val", 300), ("val", 3)]), ] _write_csv(metric, "metric_t.csv") run_copy_metrics("metric_t.csv", "metric.csv", plots_no_cache=["metric.csv"]) props = {"x": "first_val", "y": "second_val"} plot_string = dvc.plots.show(props=props)["metric.csv"] plot_content = json.loads(plot_string) assert plot_content["data"]["values"] == [ { "val": "2", "rev": "workspace", "first_val": "100", "second_val": "100", }, { "val": "3", "rev": "workspace", "first_val": "200", "second_val": "300", }, ] assert plot_content["encoding"]["x"]["field"] == "first_val" assert plot_content["encoding"]["y"]["field"] == "second_val"
def test_multiple_plots(tmp_dir, scm, dvc, run_copy_metrics): metric1 = [ OrderedDict([("first_val", 100), ("second_val", 100), ("val", 2)]), OrderedDict([("first_val", 200), ("second_val", 300), ("val", 3)]), ] metric2 = [ OrderedDict([("first_val", 100), ("second_val", 100), ("val", 2)]), OrderedDict([("first_val", 200), ("second_val", 300), ("val", 3)]), ] _write_csv(metric1, "metric_t1.csv") _write_json(tmp_dir, metric2, "metric_t2.json") run_copy_metrics("metric_t1.csv", "metric1.csv", plots_no_cache=["metric1.csv"]) run_copy_metrics("metric_t2.json", "metric2.json", plots_no_cache=["metric2.json"]) assert len(dvc.plots.show().keys()) == 2