code: def export(self, fileName=None):
      if not HAVE_HDF5:
          raise RuntimeError(
              "This exporter requires the h5py package, "
              "but it was not importable."
          )
  
      import h5py
  
      if not isinstance(self.item, PlotItem):
          raise Exception(
              "Must have a PlotItem selected for HDF5 export."
          )
  
      if fileName is None:
          self.fileSaveDialog(filter=["*.h5", "*.hdf", "*.hd5"])
          return
      dsname = self.params["Name"]
      fd = h5py.File(
          fileName, "a"
      )  # forces append to file... 'w' doesn't seem to "delete/overwrite"
      data = []
  
      appendAllX = self.params["columnMode"] == "(x,y) per plot"
      # Check if the arrays are ragged
      len_first = (
          len(self.item.curves[0].getData()[0])
          if self.item.curves[0]
          else None
      )
      ragged = any(
          len(i.getData()[0]) != len_first for i in self.item.curves
      )
  
      if ragged:
          dgroup = fd.create_group(dsname)
          for i, c in enumerate(self.item.curves):
              d = c.getData()
              fdata = numpy.array([d[0], d[1]]).astype("double")
              cname = c.name() if c.name() is not None else str(i)
              dgroup.create_dataset(cname, data=fdata)
      else:
          for i, c in enumerate(self.item.curves):
              d = c.getData()
              if appendAllX or i == 0:
                  data.append(d[0])
              data.append(d[1])
  
          fdata = numpy.array(data).astype("double")
          fd.create_dataset(dsname, data=fdata)
  
      fd.close()
  
file_path: pyqtgraph/pyqtgraph/exporters/HDF5Exporter.py
imports: import importlib.util
  import numpy
  from ..None import PlotItem
  from ..parametertree import Parameter
  from ..Qt import QtCore
  from .Exporter import Exporter
label_desc: Use image node_id 3 for calling the HDF5Exporter obj's underlying member method code with example usage: obj.export(fileName) without return types