code: def test_layout_with_grid(self):
      # Create GridSpace
      grid = GridSpace(
          {(i, j): Curve([i, j]) for i in [0, 1] for j in [0, 1]}
      )
      grid = grid.opts(vspacing=0, hspacing=0)
  
      # Create Scatter
      scatter = Scatter([-10, 0])
  
      # Create Horizontal Layout
      layout = (scatter + grid).opts(vspacing=0, hspacing=0)
  
      state = self._get_plot_state(layout)
  
      # Compute expected x domain break
      start_fig_width = 400
      grid_fig_width = 400 * 1.1
      x_domain_break1 = start_fig_width / (
          start_fig_width + grid_fig_width
      )
  
      # Compute expect y domain break for left scatter plot
      start_fig_height = 400
      grid_fig_height = start_fig_height * 1.1
      y_domain_break1 = start_fig_height / grid_fig_height
  
      # Check the scatter plot on the left
      self.assertEqual(state["data"][0]["y"], np.array([-10, 0]))
      self.assertEqual(state["data"][0]["mode"], "markers")
      self.assertEqual(state["data"][0]["xaxis"], "x")
      self.assertEqual(state["data"][0]["yaxis"], "y")
      self.assertEqual(state["layout"]["xaxis"]["range"], [0, 1])
      self.assertEqual(
          state["layout"]["xaxis"]["domain"], [0, x_domain_break1]
      )
      self.assertEqual(state["layout"]["yaxis"]["range"], [-10, 1])
      self.assertEqual(
          state["layout"]["yaxis"]["domain"], [0, y_domain_break1]
      )
  
      # Check the grid plot on the right
  
      # (0, 0) - bottom-left
      self.assertEqual(state["data"][1]["y"], np.array([0, 0]))
      self.assertEqual(state["data"][1]["mode"], "lines")
      self.assertEqual(state["data"][1]["xaxis"], "x2")
      self.assertEqual(state["data"][1]["yaxis"], "y2")
  
      # (1, 0) - bottom-right
      self.assertEqual(state["data"][2]["y"], np.array([1, 0]))
      self.assertEqual(state["data"][2]["mode"], "lines")
      self.assertEqual(state["data"][2]["xaxis"], "x3")
      self.assertEqual(state["data"][2]["yaxis"], "y2")
  
      # (0, 1) - top-left
      self.assertEqual(state["data"][3]["y"], np.array([0, 1]))
      self.assertEqual(state["data"][3]["mode"], "lines")
      self.assertEqual(state["data"][3]["xaxis"], "x2")
      self.assertEqual(state["data"][3]["yaxis"], "y3")
  
      # (1, 1) - top-right
      self.assertEqual(state["data"][4]["y"], np.array([1, 1]))
      self.assertEqual(state["data"][4]["mode"], "lines")
      self.assertEqual(state["data"][4]["xaxis"], "x3")
      self.assertEqual(state["data"][4]["yaxis"], "y3")
  
      # Axes
      x_dimain_break2 = x_domain_break1 + (1 - x_domain_break1) / 2
      self.assertEqual(
          state["layout"]["xaxis2"]["domain"],
          [x_domain_break1, x_dimain_break2],
      )
      self.assertEqual(
          state["layout"]["xaxis3"]["domain"], [x_dimain_break2, 1.0]
      )
      self.assertEqual(state["layout"]["yaxis2"]["domain"], [0, 0.5])
      self.assertEqual(state["layout"]["yaxis3"]["domain"], [0.5, 1.0])
  
file_path: holoviews/holoviews/tests/plotting/plotly/test_gridplot.py
imports: import numpy
  from holoviews.core.spaces import GridSpace
  from holoviews.element import Curve, Scatter
  from .test_plot import TestPlotlyPlot
label_desc: Use image node_id 1 for calling the TestGridPlot obj's underlying member method code with example usage: obj.test_layout_with_grid() without return types