Categorygithub.com/jszczuko/plot4tview
module
0.0.0-20230509105829-f7c34fe9c795
Repository: https://github.com/jszczuko/plot4tview.git
Documentation: pkg.go.dev

# README

plot4tview

Plots for tview.

Set of UI primitives that I was missing from tview project.

Screenshot

Installation

go get github.com/jszczuko/plot4tview

Demo

You can find source file and [test data] (pkg/demo/test_data.txt) in demo package.

package main

import (
	"fmt"
	"log"
	"os"
	"time"

	"github.com/jszczuko/plot4tview/pkg/gui"
	"github.com/rivo/tview"
)

func main() {
	file, err := os.OpenFile("logs.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
	if err != nil {
		log.Fatal(err)
	}
	log.SetOutput(file)

	app := tview.NewApplication()

	data := make([][]float64, 0)

	data_file, err := os.Open("test_data.txt")
	if err != nil {
		log.Fatal(err)
	}

	index := 0

	for {
		var flt float64
		n, err := fmt.Fscanln(data_file, &flt)
		if n == 0 || err != nil {
			break
		}
		point := make([]float64, 2)
		point[0] = float64(index)
		point[1] = flt
		data = append(data, point)
		index++
	}

	p := gui.NewPlot()
	bp := gui.NewBarPlot()
	dp := gui.NewDotPlot()

	
	p.SetXAxisText("Time", 0)
	p.SetYAxisText("% of memory", 1)

	
	bp.SetXAxisText("Time", 0)
	bp.SetYAxisText("% of CPU", 1)

	
	dp.SetXAxisText("Time", 0)
	dp.SetYAxisText("% of CPU", 1)

	maxEnd := len(data) - 1
	start := 0
	stop := 190

	p.SetData(data[start:stop])
	bp.SetData(data[start:stop])
	dp.SetData(data[start:stop])

	flex := tview.NewFlex().SetDirection(tview.FlexRow).
		AddItem(bp.SetPlotTite(" Bar Plot ").SetPlotBorder(true), 0, 1, false).
		AddItem(dp.SetPlotTite(" Point Plot ").SetPlotBorder(true), 0, 1, false).
		AddItem(p.SetPlotTite(" Plot ").SetPlotBorder(true), 0, 1, true)

	if err := app.SetRoot(flex,
		true).EnableMouse(true).Run(); err != nil {
		panic(err)
	}
}

# Packages

No description provided by the author