digraph
{
 // LATEX_PDF_SIZE
  bgcolor="transparent";
  edge [fontname="FreeSans",fontsize="12",labelfontname="FreeSans",labelfontsize="12"];
  node [fontname="FreeSans",fontsize="12",shape=record];
  rankdir="LR";

  {
    rank=same;
    JKQTPPlotElement [URL="\link JKQTPPlotElement"];
    noteJKQTPPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nelements drawn\nonto a plot"];
    JKQTPPlotElement -> noteJKQTPPlotElement [style=dashed,arrowhead=none];
  }

  {
    rank=same;
    JKQTPGraph [URL="\link JKQTPPlotElement"];
    noteJKQTPGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nactual graphs"];
    JKQTPGraph -> noteJKQTPGraph [style=dashed,arrowhead=none];
	
    JKQTPGeometricPlotElement [URL="\link JKQTPGeometricPlotElement"];
    noteJKQTPGeometricPlotElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nnon-graph elements,\ne.g. geometric elements"];
    JKQTPGeometricPlotElement -> noteJKQTPGeometricPlotElement [style=dashed,arrowhead=none];
	
    JKQTPPlotAnnotationElement [URL="\link JKQTPPlotAnnotationElement"];
    noteJKQTPPlotAnnotationElement [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraph annotation elements,\ne.g. text, symbols, ranges ..."];
    JKQTPPlotAnnotationElement -> noteJKQTPPlotAnnotationElement [style=dashed,arrowhead=none];
  }


  {
    rank=same;

    JKQTPXYGraph [URL="\link JKQTPXYGraph"]
    noteJKQTPXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs"];
    JKQTPXYGraph -> noteJKQTPXYGraph [style=dashed,arrowhead=none];
	
    JKQTPSingleColumnGraph [URL="\link JKQTPSingleColumnGraph"]
    noteJKQTPSingleColumnGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on only\n a single column of data"];
    JKQTPSingleColumnGraph -> noteJKQTPSingleColumnGraph [style=dashed,arrowhead=none];
	
    JKQTPImageBase [URL="\link JKQTPImageBase"]
    noteJKQTPImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \n2D images/matrices"];
    JKQTPImageBase -> noteJKQTPImageBase [style=dashed,arrowhead=none];
  }

  {
    rank=same;

    JKQTPXYYGraph [URL="\link JKQTPXYYGraph"]
    noteJKQTPXYYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x, y1, y2) data tripels"];
    JKQTPXYYGraph -> noteJKQTPXYYGraph [style=dashed,arrowhead=none];

    JKQTPXXYGraph [URL="\link JKQTPXXYGraph"]
    noteJKQTPXXYGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x1, x2, y) data tripels"];
    JKQTPXXYGraph -> noteJKQTPXXYGraph [style=dashed,arrowhead=none];

    JKQTPXYBaselineGraph [URL="\link JKQTPXYBaselineGraph"]
    noteJJKQTPXYBaselineGraph [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs based on\n (x,y) data pairs and a baseline"];
    JKQTPXYBaselineGraph -> noteJJKQTPXYBaselineGraph [style=dashed,arrowhead=none];
	
    JKQTPEvaluatedFunctionGraphBase [URL="\link JKQTPEvaluatedFunctionGraphBase"]
    noteJKQTPEvaluatedFunctionGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \ndynamically evaluated functions"];
    JKQTPEvaluatedFunctionGraphBase -> noteJKQTPEvaluatedFunctionGraphBase [style=dashed,arrowhead=none];
	
    JKQTPMathImageBase [URL="\link JKQTPMathImageBase"]
    noteJKQTPMathImageBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ndata-based images"];
    JKQTPMathImageBase -> noteJKQTPMathImageBase [style=dashed,arrowhead=none];
  }  

  {
    rank=same;

    JKQTPBarGraphBase [URL="\link JKQTPBarGraphBase"]
    noteJKQTPBarGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nbarcharts"];
    JKQTPBarGraphBase -> noteJKQTPBarGraphBase [style=dashed,arrowhead=none];

    JKQTPFilledCurveGraphBase [URL="\link JKQTPFilledCurveGraphBase"]
    noteJKQTPFilledCurveGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nfilled graphs"];
    JKQTPFilledCurveGraphBase -> noteJKQTPFilledCurveGraphBase [style=dashed,arrowhead=none];

    JKQTPImpulsesGraphBase [URL="\link JKQTPImpulsesGraphBase"]
    noteJKQTPImpulsesGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nimpulse graphs"];
    JKQTPImpulsesGraphBase -> noteJKQTPImpulsesGraphBase [style=dashed,arrowhead=none];
	
    JKQTPSpecialLineGraphBase [URL="\link JKQTPSpecialLineGraphBase"]
    noteJKQTPSpecialLineGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nspecial line graphs"];
    JKQTPSpecialLineGraphBase -> noteJKQTPSpecialLineGraphBase [style=dashed,arrowhead=none];
	
    JKQTPBoxplotGraphBase [URL="\link JKQTPBoxplotGraphBase"]
    noteJKQTPBoxplotGraphBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na set of boxplots"];
    JKQTPBoxplotGraphBase -> noteJKQTPBoxplotGraphBase [style=dashed,arrowhead=none];
	
    JKQTPRangeBase [URL="\link JKQTPRangeBase"];
    noteJKQTPRangeBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\nrange annotations"];
    JKQTPRangeBase -> noteJKQTPRangeBase [style=dashed,arrowhead=none];
	
    JKQTPBoxplotElementBase [URL="\link JKQTPBoxplotElementBase"]
    noteJKQTPBoxplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single boxplot"];
    JKQTPBoxplotElementBase -> noteJKQTPBoxplotElementBase [style=dashed,arrowhead=none];
	
    JKQTPViolinplotElementBase [URL="\link JKQTPViolinplotElementBase"]
    noteJKQTPViolinplotElementBase [shape="note", color="lightyellow",style=filled,fontsize=8,label="base class for all\ngraphs that represent \na single violin plot"];
    JKQTPViolinplotElementBase -> noteJKQTPViolinplotElementBase [style=dashed,arrowhead=none];
  }  
	
  JKQTPPlotElement -> JKQTPGraph
  JKQTPPlotElement -> JKQTPGeometricPlotElement
  JKQTPPlotElement -> JKQTPPlotAnnotationElement
  JKQTPPlotElement -> JKQTPRangeBase
  JKQTPPlotElement -> JKQTPBoxplotElementBase
  JKQTPPlotElement -> JKQTPViolinplotElementBase

  JKQTPGraph -> JKQTPXYGraph
  JKQTPGraph -> JKQTPSingleColumnGraph
  JKQTPGraph -> JKQTPImageBase -> JKQTPMathImageBase
  JKQTPGraph -> JKQTPEvaluatedFunctionGraphBase
  JKQTPGraph -> JKQTPBoxplotGraphBase

  JKQTPXYGraph -> JKQTPXYYGraph
  JKQTPXYGraph -> JKQTPXXYGraph
  JKQTPXYGraph -> JKQTPXYBaselineGraph
  
  JKQTPXYBaselineGraph -> JKQTPBarGraphBase
  JKQTPXYBaselineGraph -> JKQTPFilledCurveGraphBase
  JKQTPXYBaselineGraph -> JKQTPImpulsesGraphBase
  JKQTPXYBaselineGraph -> JKQTPSpecialLineGraphBase

}