Documentation
¶
Overview ¶
Package eplot provides an interactive, graphical plotting utility for etable data.
It also provides various utilities to simplify the plotting of data from etable.Table data tables, using the gonum/plot package.
Index ¶
- Variables
- func PlotViewSVG(plt *plot.Plot, svge *svg.Editor, scale float64)
- func SaveSVGView(fname string, plt *plot.Plot, svge *svg.Editor, scale float64) error
- func StringViewSVG(svgstr string, svge *svg.Editor, scale float64)
- type ColParams
- type Plot2D
- func (pl *Plot2D) ColParams(colNm string) *ColParams
- func (pl *Plot2D) ColParamsTry(colNm string) (*ColParams, error)
- func (pl *Plot2D) ColsConfig()
- func (pl *Plot2D) ColsLay() *gi.Frame
- func (pl *Plot2D) ColsListUpdate()
- func (pl *Plot2D) ColsUpdate()
- func (pl *Plot2D) Config()
- func (pl *Plot2D) Defaults()
- func (pl *Plot2D) GenPlot()
- func (pl *Plot2D) GoUpdate()
- func (pl *Plot2D) IsConfiged() bool
- func (pl *Plot2D) PlotConfig()
- func (pl *Plot2D) PlotLay() *gi.Layout
- func (pl *Plot2D) SVGPlot() *svg.Editor
- func (pl *Plot2D) SaveData(fname gi.FileName)
- func (pl *Plot2D) SaveSVG(fname gi.FileName)
- func (pl *Plot2D) SetColParams(colNm string, on bool, fixMin bool, min float64, fixMax bool, max float64)
- func (pl *Plot2D) SetTable(tab *etable.Table)
- func (pl *Plot2D) Style2D()
- func (pl *Plot2D) Toolbar() *gi.ToolBar
- func (pl *Plot2D) ToolbarConfig()
- func (pl *Plot2D) Update()
- func (pl *Plot2D) XLabel() string
- func (pl *Plot2D) YLabel() string
- type PlotParams
- type TableXY
Constants ¶
This section is empty.
Variables ¶
var KiT_Plot2D = kit.Types.AddType(&Plot2D{}, Plot2DProps)
var Plot2DProps = ki.Props{ "max-width": -1, "max-height": -1, "ToolBar": ki.PropSlice{ {"Update", ki.Props{ "shortcut": "Command+U", "desc": "update graph plot", "icon": "update", }}, {"SaveSVG", ki.Props{ "label": "Save SVG...", "desc": "save plot to an SVG file", "icon": "file-save", "shortcut-func": giv.ShortcutFunc(func(gei interface{}, act *gi.Action) key.Chord { return key.Chord(gide.ChordForFun(gide.KeyFunBufSaveAs).String()) }), "Args": ki.PropSlice{ {"File Name", ki.Props{ "default-field": "SVGFile", "ext": ".svg", }}, }, }}, {"SaveData", ki.Props{ "label": "Save Data...", "icon": "file-save", "desc": "save table data to a csv comma-separated-values file", "Args": ki.PropSlice{ {"File Name", ki.Props{ "default-field": "DataFile", "ext": ".csv", }}, }, }}, }, }
var PlotColorNames = []string{"black", "red", "blue", "ForestGreen", "purple", "orange", "brown", "chartreuse", "navy", "cyan", "magenta", "tan", "salmon", "yellow4", "SkyBlue", "pink"}
these are the plot color names to use in order for successive lines -- feel free to choose your own!
Functions ¶
func PlotViewSVG ¶
PlotViewSVG shows the given gonum Plot in given GoGi svg editor widget. The scale rescales the default font sizes -- 2-4 recommended. This call must generally be enclosed within an UpdateStart / End as part of the overall update routine using it. if called from a different goroutine, it is essential to surround with BlockUpdates on Viewport as this does full damage to the tree.
func SaveSVGView ¶
SaveSVGView saves the given gonum Plot exactly as it is rendered given GoGi svg editor widget. The scale rescales the default font sizes -- 2-4 recommended.
Types ¶
type ColParams ¶
type ColParams struct {
On bool `desc:"plot this column"`
Col string `desc:"name of column we're plotting"`
Range minmax.Range64 `desc:"effective range of data to plot -- either end can be fixed"`
FullRange minmax.F64 `desc:"full actual range of data -- only valid if specifically computed"`
ColorName gi.ColorName `desc:"if non-empty, color is set by this name"`
Color gi.Color `desc:"color to use in plotting the line"`
NTicks int `desc:"desired number of ticks"`
Lbl string `desc:"if non-empty, this is an alternative label to use in plotting"`
TensorIdx int `desc:"if column has n-dimensional tensor cells in each row, this is the index within each cell to plot"`
ErrCol string `desc:"specifies a column containing error bars for this column"`
Plot *Plot2D `copy:"-" json:"-" xml:"-" view:"-" desc:"our plot, for update method"`
}
ColParams are parameters for plotting one column of data
func (*ColParams) Defaults ¶
func (cp *ColParams) Defaults()
Defaults sets defaults if nil vals present
func (*ColParams) Update ¶
func (cp *ColParams) Update()
Update satisfies the gi.Updater interface and will trigger display update on edits
func (*ColParams) UpdateVals ¶
func (cp *ColParams) UpdateVals()
UpdateVals update derived values e.g., color from color name
type Plot2D ¶
type Plot2D struct {
gi.Layout
Table *etable.Table `desc:"the table that we're plotting"`
Params PlotParams `desc:"the overall plot parameters"`
Cols []*ColParams `desc:"the parameters for each column of the table"`
GPlot *plot.Plot `desc:"the gonum plot that actually does the plotting -- always save the last one generated"`
SVGFile gi.FileName `desc:"current svg file"`
DataFile gi.FileName `desc:"current csv data file"`
InPlot bool `desc:"currently doing a plot"`
}
Plot2D is a GoGi Widget that provides a 2D plot of selected columns of etable data
func AddNewPlot2D ¶
AddNewPlot2D adds a new Plot2D to given parent node, with given name.
func (*Plot2D) ColParams ¶
ColParams returns the current column parameters by name (to access by index, just use Cols directly) returns nil if not found
func (*Plot2D) ColParamsTry ¶
ColParamsTry returns the current column parameters by name (to access by index, just use Cols directly) Try version returns error message if not found.
func (*Plot2D) ColsConfig ¶
func (pl *Plot2D) ColsConfig()
ColsConfig configures the column gui buttons
func (*Plot2D) ColsListUpdate ¶
func (pl *Plot2D) ColsListUpdate()
ColsListUpdate updates the list of columns
func (*Plot2D) ColsUpdate ¶
func (pl *Plot2D) ColsUpdate()
ColsUpdate updates the display toggles for all the cols
func (*Plot2D) GenPlot ¶
func (pl *Plot2D) GenPlot()
GenPlot generates the plot if blockUpdts is true, then block any other updates on the parent Viewport while we're plotting, because this involves destroying and rebuilding the tree, and is often called from another goroutine. if called as part of the normal render process (e.g., in Style2D, then do NOT block updates!)
func (*Plot2D) GoUpdate ¶
func (pl *Plot2D) GoUpdate()
GoUpdate updates the display based on current state of table. This version must be used when called from another goroutine does proper blocking to synchronize with updating in the main goroutine.
func (*Plot2D) IsConfiged ¶
IsConfiged returns true if widget is fully configured
func (*Plot2D) SaveSVG ¶
SaveSVG saves the plot to an svg -- first updates to ensure that plot is current
func (*Plot2D) SetColParams ¶
func (pl *Plot2D) SetColParams(colNm string, on bool, fixMin bool, min float64, fixMax bool, max float64)
SetColParams sets main parameters for one column
func (*Plot2D) ToolbarConfig ¶
func (pl *Plot2D) ToolbarConfig()
type PlotParams ¶
type PlotParams struct {
Title string `desc:"optional title at top of plot"`
LineWidth float64 `desc:"width of lines"`
Scale float64 `def:"2" desc:"overall scaling factor -- the larger the number, the larger the fonts are relative to the graph"`
XAxisCol string `desc:"what column to use for the common x axis -- if empty or not found, the row number is used"`
XAxisLabel string `desc:"optional label to use for XAxis instead of column name"`
YAxisLabel string `desc:"optional label to use for YAxis -- if empty, first column name is used"`
Plot *Plot2D `copy:"-" json:"-" xml:"-" view:"-" desc:"our plot, for update method"`
}
PlotParams are parameters for overall plot
func (*PlotParams) Defaults ¶
func (pp *PlotParams) Defaults()
Defaults sets defaults if nil vals present
func (*PlotParams) Update ¶
func (pp *PlotParams) Update()
Update satisfies the gi.Updater interface and will trigger display update on edits
type TableXY ¶
type TableXY struct {
Table *etable.Table `desc:"the data table to plot from"`
XCol, YCol int `desc:"the indexes of the tensor columns to use for the X and Y data, respectively"`
XIdx, YIdx int `desc:"the indexes of the element within each tensor cell if cells are n-dimensional, respectively"`
}
TableXY selects two 1D columns (i.e., scalar cells) from a etable.Table data table to plot in a gonum plot, satisfying the plotter.XYer interface
func NewTableXY ¶
NewTableXY returns a new XY plot view onto the given etable.Table, from given column indexes. Column indexes are enforced to be valid, with an error message if they are not.
func NewTableXYNames ¶
NewTableXYNames returns a new XY plot view onto the given etable.Table, from given column names Column indexes are enforced to be valid, with an error message if they are not.