code: def performance_plot(perf, title):
      formats = ["nbformat"] + JUPYTEXT_FORMATS
      mean = perf.groupby("implementation").mean().loc[formats]
      std = perf.groupby("implementation").std().loc[formats]
      data = [
          go.Bar(
              x=mean.index,
              y=mean[col],
              error_y=dict(
                  type="data",
                  array=std[col],
                  color=color,
                  thickness=0.5,
              )
              if col != "size"
              else dict(),
              name=col,
              yaxis={"read": "y1", "write": "y2", "size": "y3"}[col],
          )
          for col, color in zip(mean.columns, DEFAULT_PLOTLY_COLORS)
      ]
      layout = go.Layout(
          title=title,
          xaxis=dict(title="Implementation", anchor="y3"),
          yaxis=dict(domain=[0.7, 1], title="Read (secs)"),
          yaxis2=dict(domain=[0.35, 0.65], title="Write (secs)"),
          yaxis3=dict(domain=[0, 0.3], title="Size"),
      )
      return go.Figure(data=data, layout=layout)
  
file_path: jupytext/demo/Benchmarking Jupytext.py
imports: import time
  import copy
  import pandas
  import plotly.graph_objects
  from plotly.colors import DEFAULT_PLOTLY_COLORS
  import nbformat
  import jupytext
label_desc: Use image node_id 2 for calling a global function with example usage: performance_plot(perf, title) and returns: go