def fill_graph(graph, array):
    """Fill a ROOT graph with a NumPy array.

    Parameters
    ----------
    graph : a ROOT TGraph or TGraph2D
        The ROOT graph to fill.
    array : numpy array of shape [n_samples, n_dimensions]
        The values to fill the graph with. The number of columns must match the
        dimensionality of the graph.

    """
    import ROOT
    array = np.asarray(array, dtype=np.double)
    if isinstance(graph, ROOT.TGraph):
        if array.ndim != 2:
            raise ValueError("array must be 2-dimensional")
        if array.shape[1] != 2:
            raise ValueError(
                "length of the second dimension must equal "
                "the dimension of the graph")
        return _librootnumpy.fill_g1(
            ROOT.AsCObject(graph), array)
    elif isinstance(graph, ROOT.TGraph2D):
        if array.ndim != 2:
            raise ValueError("array must be 2-dimensional")
        if array.shape[1] != 3:
            raise ValueError(
                "length of the second dimension must equal "
                "the dimension of the graph")
        return _librootnumpy.fill_g2(
            ROOT.AsCObject(graph), array)
    else:
        raise TypeError(
            "hist must be an instance of ROOT.TGraph or ROOT.TGraph2D")
Fill a ROOT graph with a NumPy array.

    Parameters
    ----------
    graph : a ROOT TGraph or TGraph2D
        The ROOT graph to fill.
    array : numpy array of shape [n_samples, n_dimensions]
        The values to fill the graph with. The number of columns must match the
        dimensionality of the graph.