code: def draw_parameter_performance():
      # extract train_auc and valid_auc into separate lists
      for dataset, architectures in data_dict.items():
          fig, ax = plt.subplots(figsize=(6.4, 4))
          print(dataset)
          param_sizes = []
          valid_auc = []
          for architecture, epochs in architectures.items():
              for epoch, metrics in epochs.items():
                  if str(epoch_sampled[dataset]) == epoch:
                      param_sizes.append(compute_params(architecture))
                      valid_auc.append(metrics["valid_auc"])
                      break
  
          plt.scatter(param_sizes, valid_auc)
          y_format = ticker.FuncFormatter(func)
          ax.xaxis.set_major_formatter(y_format)
          plt.grid()
          plt.xlabel("Parameter Size")
          plt.ylabel("Validation AUC")
          # plt.legend(loc='upper left', fontsize=set_lgend_size)
          plt.tight_layout()
          export_legend(ori_fig=fig, colnum=5)
          fig.savefig(f"para_{dataset}.jpg", bbox_inches="tight")
  
file_path: singa/examples/model_selection/TRAILS-Database-Native-Model-Selection/internal/ml/model_selection/exps/nas_bench_tabular/measure_param_auc.py
imports: import numpy
  import matplotlib
  import matplotlib.pyplot
  import os
  from src.tools.io_tools import read_json
  import matplotlib.ticker
label_desc: Use image node_id 4 for calling a global function with example usage: draw_parameter_performance() without return types