code: def make_plot(plot_type):
      if plot_type == "scatter_plot":
          cars = data.cars()
          return (
              alt.Chart(cars)
              .mark_point()
              .encode(
                  x="Horsepower",
                  y="Miles_per_Gallon",
                  color="Origin",
              )
          )
      elif plot_type == "heatmap":
          # Compute x^2 + y^2 across a 2D grid
          x, y = np.meshgrid(range(-5, 5), range(-5, 5))
          z = x**2 + y**2
  
          # Convert this grid to columnar data expected by Altair
          source = pd.DataFrame(
              {"x": x.ravel(), "y": y.ravel(), "z": z.ravel()}
          )
          return (
              alt.Chart(source)
              .mark_rect()
              .encode(x="x:O", y="y:O", color="z:Q")
          )
      elif plot_type == "us_map":
          states = alt.topo_feature(data.us_10m.url, "states")
          source = data.income.url
  
          return (
              alt.Chart(source)
              .mark_geoshape()
              .encode(
                  shape="geo:G",
                  color="pct:Q",
                  tooltip=["name:N", "pct:Q"],
                  facet=alt.Facet("group:N", columns=2),
              )
              .transform_lookup(
                  lookup="id",
                  from_=alt.LookupData(data=states, key="id"),
                  as_="geo",
              )
              .properties(
                  width=300,
                  height=175,
              )
              .project(type="albersUsa")
          )
      elif plot_type == "interactive_barplot":
          source = data.movies.url
  
          pts = alt.selection(type="single", encodings=["x"])
  
          rect = (
              alt.Chart(data.movies.url)
              .mark_rect()
              .encode(
                  alt.X("IMDB_Rating:Q", bin=True),
                  alt.Y("Rotten_Tomatoes_Rating:Q", bin=True),
                  alt.Color(
                      "count()",
                      scale=alt.Scale(scheme="greenblue"),
                      legend=alt.Legend(title="Total Records"),
                  ),
              )
          )
  
          circ = (
              rect.mark_point()
              .encode(
                  alt.ColorValue("grey"),
                  alt.Size(
                      "count()",
                      legend=alt.Legend(title="Records in Selection"),
                  ),
              )
              .transform_filter(pts)
          )
  
          bar = (
              alt.Chart(source)
              .mark_bar()
              .encode(
                  x="Major_Genre:N",
                  y="count()",
                  color=alt.condition(
                      pts,
                      alt.ColorValue("steelblue"),
                      alt.ColorValue("grey"),
                  ),
              )
              .properties(width=550, height=200)
              .add_selection(pts)
          )
  
          plot = alt.vconcat(rect + circ, bar).resolve_legend(
              color="independent", size="independent"
          )
          return plot
      elif plot_type == "radial":
          source = pd.DataFrame({"values": [12, 23, 47, 6, 52, 19]})
  
          base = alt.Chart(source).encode(
              theta=alt.Theta("values:Q", stack=True),
              radius=alt.Radius(
                  "values",
                  scale=alt.Scale(type="sqrt", zero=True, rangeMin=20),
              ),
              color="values:N",
          )
  
          c1 = base.mark_arc(innerRadius=20, stroke="#fff")
  
          c2 = base.mark_text(radiusOffset=10).encode(text="values:Q")
  
          return c1 + c2
      elif plot_type == "multiline":
          source = data.stocks()
  
          highlight = alt.selection(
              type="single",
              on="mouseover",
              fields=["symbol"],
              nearest=True,
          )
  
          base = alt.Chart(source).encode(
              x="date:T", y="price:Q", color="symbol:N"
          )
  
          points = (
              base.mark_circle()
              .encode(opacity=alt.value(0))
              .add_selection(highlight)
              .properties(width=600)
          )
  
          lines = base.mark_line().encode(
              size=alt.condition(~highlight, alt.value(1), alt.value(3))
          )
  
          return points + lines
  
imports: import altair
  import gradio
  import numpy
  import pandas
  from vega_datasets import data
label_desc: Use image node_id 1 for calling a global function with example usage: make_plot(plot_type) and returns: alt, alt, alt, plot, unknown, unknown