func (pl *Plot2D) SetColParams(colNm string, on bool, fixMin bool, min float64, fixMax bool, max float64) *ColParams {
	cp, err := pl.ColParamsTry(colNm)
	if err != nil {
		log.Println(err)
		return nil
	}
	cp.On = on
	cp.Range.FixMin = fixMin
	if fixMin {
		cp.Range.Min = min
	}
	cp.Range.FixMax = fixMax
	if fixMax {
		cp.Range.Max = max
	}
	return cp
}
SetColParams sets main parameters for one column
package eplot
import (
	"fmt"
	"image"
	"log"
	"math"
	"strings"
	"github.com/emer/etable/etable"
	"github.com/emer/etable/etensor"
	"github.com/goki/gi/gi"
	"github.com/goki/gi/gist"
	"github.com/goki/gi/giv"
	"github.com/goki/gi/svg"
	"github.com/goki/gi/units"
	"github.com/goki/ki/ints"
	"github.com/goki/ki/ki"
	"github.com/goki/ki/kit"
	"gonum.org/v1/plot"
	"gonum.org/v1/plot/font"
)
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"`
}
var KiT_Plot2D = kit.Types.AddType(&Plot2D{}, Plot2DProps)
func AddNewPlot2D(parent ki.Ki, name string) *Plot2D {
	return parent.AddNewChild(KiT_Plot2D, name).(*Plot2D)
}
func (pl *Plot2D) CopyFieldsFrom(frm interface{}) {
	fr := frm.(*Plot2D)
	pl.Layout.CopyFieldsFrom(&fr.Layout)
	pl.Params.CopyFrom(&fr.Params)
	pl.SetTableView(fr.Table)
	mx := ints.MinInt(len(pl.Cols), len(fr.Cols))
	for i := 0; i < mx; i++ {
		pl.Cols[i].CopyFrom(fr.Cols[i])
	}
}
func (pl *Plot2D) Defaults() {
	pl.Params.Plot = pl
	pl.Params.Defaults()
	plot.DefaultFont = font.Font{Typeface: "Liberation", Variant: "Sans"}
}
func (pl *Plot2D) SetTable(tab *etable.Table) {
	pl.Defaults()
	pl.Table = etable.NewIdxView(tab)
	pl.Config()
}
func (pl *Plot2D) SetTableView(tab *etable.IdxView) {
	pl.Defaults()
	pl.Table = tab
	pl.Cols = nil
	pl.Config()
}
func (pl *Plot2D) ColParamsTry(colNm string) (*ColParams, error) {
	for _, cp := range pl.Cols {
		if cp.Col == colNm {
			return cp, nil
		}
	}
	return nil, fmt.Errorf("eplot plot: %v column named: %v not found", pl.Nm, colNm)
}
func (pl *Plot2D) ColParams(colNm string) *ColParams {
	cp, _ := pl.ColParamsTry(colNm)
	return cp
}
const (
	On       bool = true
	Off           = false
	FixMin        = true
	FloatMin      = false
	FixMax        = true
	FloatMax      = false
)