code: def plot_from_argv() -> None:
      """Plot previously collected metrics, based on command line arguments."""
      parser = argparse.ArgumentParser(
          description="Plot a benchmark suite."
      )
      parser.add_argument(
          "--no_subdir",
          "--no-subdir",
          action="store_true",
          help="By default this script will create a subdirectory inside `dest` and write output to"
          " that. Setting this flag will suppress the subdirectory and use `dest` directly.",
      )
      parser.add_argument(
          "suite",
          type=str,
          choices=BENCHMARK_SUITES.names(),
          help="Which benchmark suite to run.",
      )
      parser.add_argument(
          "sources",
          type=Path,
          nargs="+",
          help="Directory(s) to read data from."
          " These will be recursively crawled to find all `metrics.csv`s.",
      )
      parser.add_argument(
          "dest",
          type=Path,
          help="Directory to write results to.",
      )
      args = parser.parse_args()
  
      metadata = BenchmarkMetadata.create(args.suite)
      suite = BENCHMARK_SUITES.get(args.suite)
      results_df, results_metadata = _crawl_sources(args.sources)
      dest = setup_dest(metadata, args.dest, args.no_subdir)
      plot(metadata, suite, results_df, results_metadata, dest)
  
file_path: GPflow/benchmark/plot.py
imports: import argparse
  import json
  from pathlib import Path
  from typing import Collection, Sequence, Tuple
  import matplotlib.pyplot
  import pandas
  import benchmark.benchmarks
  import benchmark.metrics
  from benchmark.benchmark_api import BENCHMARK_SUITES, BenchmarkSuite
  from benchmark.grouping import group
  from benchmark.metadata import BenchmarkMetadata
  from benchmark.paths import setup_dest
label_desc: Use image node_id 3 for calling a global function with example usage: plot_from_argv() without return types