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 ¶
- Constants
- 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) CopyFieldsFrom(frm interface{})
- func (pl *Plot2D) Defaults()
- func (pl *Plot2D) GenPlot()
- func (pl *Plot2D) GenPlotBar()
- func (pl *Plot2D) GenPlotXY()
- func (pl *Plot2D) GoUpdate()
- func (pl *Plot2D) GoUpdatePlot()
- func (pl *Plot2D) IsConfiged() bool
- func (pl *Plot2D) OpenCSV(fname gi.FileName, delim etable.Delims)
- func (pl *Plot2D) PlotConfig()
- func (pl *Plot2D) PlotLay() *gi.Layout
- func (pl *Plot2D) PlotXAxis(plt *plot.Plot) (xi int, xview *etable.IdxView, xbreaks []int, err error)
- func (pl *Plot2D) SVGPlot() *svg.Editor
- func (pl *Plot2D) SaveCSV(fname gi.FileName, delim etable.Delims)
- func (pl *Plot2D) SavePNG(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) *ColParams
- func (pl *Plot2D) SetTable(tab *etable.Table)
- func (pl *Plot2D) SetTableView(tab *etable.IdxView)
- func (pl *Plot2D) Style2D()
- func (pl *Plot2D) Toolbar() *gi.ToolBar
- func (pl *Plot2D) ToolbarConfig()
- func (pl *Plot2D) Update()
- func (pl *Plot2D) UpdatePlot()
- func (pl *Plot2D) XLabel() string
- func (pl *Plot2D) YLabel() string
- type PlotParams
- type PlotTypes
- type TableXY
- func (txy *TableXY) FilterVals()
- func (txy *TableXY) Label(row int) string
- func (txy *TableXY) Len() int
- func (txy *TableXY) TRowValue(row int) float64
- func (txy *TableXY) TRowXValue(row int) float64
- func (txy *TableXY) Validate() error
- func (txy *TableXY) Value(row int) float64
- func (txy *TableXY) XValue(row int) float64
- func (txy *TableXY) XY(row int) (x, y float64)
- func (txy *TableXY) YError(row int) (float64, float64)
Constants ¶
const ( On bool = true Off = false FixMin = true FloatMin = false FixMax = true FloatMax = false )
use these for SetColParams args
Variables ¶
var KiT_Plot2D = kit.Types.AddType(&Plot2D{}, Plot2DProps)
var KiT_PlotTypes = kit.Enums.AddEnum(PlotTypesN, kit.NotBitFlag, nil)
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", "Args": ki.PropSlice{ {"File Name", ki.Props{ "default-field": "SVGFile", "ext": ".svg", }}, }, }}, {"SavePNG", ki.Props{ "label": "Save PNG...", "desc": "save current render of plot to PNG file", "icon": "file-save", "Args": ki.PropSlice{ {"File Name", ki.Props{ "ext": ".png", }}, }, }}, {"OpenCSV", ki.Props{ "label": "Open CSV File...", "icon": "file-open", "desc": "Open CSV-formatted data (or any delimeter) -- also recognizes emergent-style headers", "Args": ki.PropSlice{ {"File Name", ki.Props{ "ext": ".tsv,.csv", }}, {"Delimiter", ki.Props{ "default": etable.Tab, "desc": "delimiter between columns", }}, }, }}, {"SaveCSV", ki.Props{ "label": "Save Data...", "icon": "file-save", "desc": "Save CSV-formatted data (or any delimiter) -- header outputs emergent-style header data (recommended)", "Args": ki.PropSlice{ {"File Name", ki.Props{ "default-field": "DataFile", "ext": ".tsv,.csv", }}, {"Delimiter", ki.Props{ "default": etable.Tab, "desc": "delimiter between columns", }}, }, }}, }, }
var PlotColorNames = []string{"black", "red", "blue", "ForestGreen", "purple", "orange", "brown", "chartreuse", "navy", "cyan", "magenta", "tan", "salmon", "yellow", "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 `` /* 153-byte string literal not displayed */ ErrCol string `desc:"specifies a column containing error bars for this column"` IsString bool `inactive:"+" desc:"if true this is a string column -- plots as labels"` 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.IdxView `desc:"the idxview of 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 `inactive:"+" 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) CopyFieldsFrom ¶ added in v1.0.0
func (pl *Plot2D) CopyFieldsFrom(frm interface{})
func (*Plot2D) GenPlot ¶
func (pl *Plot2D) GenPlot()
GenPlot generates the plot and renders it to SVG It surrounds operation with InPlot true / false to prevent multiple updates
func (*Plot2D) GenPlotBar ¶ added in v1.0.0
func (pl *Plot2D) GenPlotBar()
GenPlotBar generates a Bar plot, setting GPlot variable
func (*Plot2D) GenPlotXY ¶ added in v1.0.0
func (pl *Plot2D) GenPlotXY()
GenPlotXY generates an XY (lines, points) plot, setting GPlot variable
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) GoUpdatePlot ¶ added in v1.0.0
func (pl *Plot2D) GoUpdatePlot()
GoUpdatePlot updates the display based on current IdxView into 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) OpenCSV ¶ added in v1.0.0
OpenCSV opens the Table data from a csv (comma-separated values) file (or any delim)
func (*Plot2D) PlotXAxis ¶ added in v1.0.0
func (pl *Plot2D) PlotXAxis(plt *plot.Plot) (xi int, xview *etable.IdxView, xbreaks []int, err error)
PlotXAxis processes the XAxis and returns its index and any breaks to insert based on negative X axis traversals or NaN values. xbreaks always ends in Rows
func (*Plot2D) SaveCSV ¶ added in v1.0.0
SaveCSV saves the Table data to a csv (comma-separated values) file with headers (any delim)
func (*Plot2D) SavePNG ¶ added in v1.0.1
SavePNG saves the current plot to a png, capturing current render
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) *ColParams
SetColParams sets main parameters for one column
func (*Plot2D) SetTableView ¶ added in v1.0.0
SetTableView sets the idxview of table to view and updates view
func (*Plot2D) ToolbarConfig ¶
func (pl *Plot2D) ToolbarConfig()
func (*Plot2D) Update ¶
func (pl *Plot2D) Update()
Update updates the display based on current state of table. Calls Sequential method on etable.IdxView to view entire current table. This version can only be called within main goroutine for window eventloop -- use GoUpdate for other-goroutine updates.
func (*Plot2D) UpdatePlot ¶ added in v1.0.0
func (pl *Plot2D) UpdatePlot()
UpdatePlot updates the display based on current IdxView into table. This version can only be called within main goroutine for window eventloop -- use GoUpdate for other-goroutine updates.
type PlotParams ¶
type PlotParams struct { Title string `desc:"optional title at top of plot"` Type PlotTypes `desc:"type of plot to generate"` Lines bool `desc:"plot lines"` Points bool `desc:"plot points with symbols"` LineWidth float64 `desc:"width of lines"` PointSize float64 `desc:"size of points"` BarWidth float64 `desc:"width of bars for bar plot"` NegXDraw bool `` /* 149-byte string literal not displayed */ 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"` XAxisRot float64 `desc:"rotation of the X Axis labels, in degrees"` Plot *Plot2D `copy:"-" json:"-" xml:"-" view:"-" desc:"our plot, for update method"` }
PlotParams are parameters for overall plot
func (*PlotParams) CopyFrom ¶ added in v1.0.0
func (pp *PlotParams) CopyFrom(fr *PlotParams)
CopyFrom copies from other col params
func (*PlotParams) Defaults ¶
func (pp *PlotParams) Defaults()
Defaults sets defaults if nil vals present
func (*PlotParams) FmMeta ¶ added in v1.0.0
func (pp *PlotParams) FmMeta(dt *etable.Table)
FmMeta sets plot params from meta data
func (*PlotParams) Update ¶
func (pp *PlotParams) Update()
Update satisfies the gi.Updater interface and will trigger display update on edits
type PlotTypes ¶ added in v1.0.0
type PlotTypes int32
PlotTypes are different types of plots
func (*PlotTypes) FromString ¶ added in v1.0.0
func (PlotTypes) MarshalJSON ¶ added in v1.0.0
func (*PlotTypes) UnmarshalJSON ¶ added in v1.0.0
type TableXY ¶
type TableXY struct { Table *etable.IdxView `desc:"the index view of data table to plot from"` XCol, YCol int `desc:"the indexes of the tensor columns to use for the X and Y data, respectively"` XRowSz, YRowSz int `desc:"numer of elements in each row of data -- 1 for scalar, > 1 for multi-dimensional"` XIdx, YIdx int `desc:"the indexes of the element within each tensor cell if cells are n-dimensional, respectively"` LblCol int `desc:"the column to use for returning a label using Label interface -- for string cols"` ErrCol int `` /* 139-byte string literal not displayed */ XRange minmax.Range64 }
TableXY selects two columns from a etable.Table data table to plot in a gonum plot, satisfying the plotter.XYer and .Valuer interfaces (for bar charts). For Tensor-valued cells, Idx's specify tensor cell. Also satisfies the plotter.Labeler interface for labels attached to a line, and plotter.YErrorer for error bars.
func NewTableXY ¶
NewTableXY returns a new XY plot view onto the given IdxView of etable.Table (makes a copy), from given column indexes, and tensor indexes within each cell. Column indexes are enforced to be valid, with an error message if they are not.
func NewTableXYName ¶ added in v1.0.0
func NewTableXYName(dt *etable.IdxView, xi, xtsrIdx int, ycol string, ytsrIdx int) (*TableXY, error)
NewTableXYName returns a new XY plot view onto the given IdxView of etable.Table (makes a copy), from given column name and tensor indexes within each cell. Column indexes are enforced to be valid, with an error message if they are not.
func (*TableXY) FilterVals ¶ added in v1.0.0
func (txy *TableXY) FilterVals()
FilterVals removes items with NaN values, and out of X range
func (*TableXY) Label ¶ added in v1.0.0
Label returns a label for given row in table, using plotter.Labeler interface
func (*TableXY) TRowValue ¶ added in v1.0.0
TRowValue returns the y value at given true table row in table view
func (*TableXY) TRowXValue ¶ added in v1.0.0
TRowXValue returns an x value at given actual row in table
func (*TableXY) Validate ¶
Validate returns error message if column indexes are invalid, else nil it also sets column indexes to 0 so nothing crashes.