Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Plotting library written in Rust

License

NotificationsYou must be signed in to change notification settings

elftausend/graplot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crates.io versionDocs

'graplot' is an experimental plotting library written in Rust that is based onmacroquad (internallylitequad).It creates a window displaying the graphs.

Installation

Add 'graplot' as a dependency:

[dependencies]graplot ="0.1.22"
use graplot::Plot;let plot =Plot::new([-4., -2.,1.,4.]);plot.show();

first plot example

3D line plot:

use graplot::Plot3D;let xs =[0.,1.,2.,3.,4.,5.,6.];let ys =[0.,1.,4.,9.,16.,25.,36.];let zs =[0.,1.,4.,9.,16.,25.,36.];// move with: W, A, S, Dlet plot =Plot3D::new((xs, ys, zs,"r-o"));plot.show();

3d line plot example

Multiple graphs:

use graplot::Plot;let xs =[1.,2.,3.,];let ys =[1.7,3.,1.9];let ys1 =[1.4,1.6,1.5];let ys2 =[0.9,1.2,1.7,1.9,2.];letmut plot =Plot::new((xs, ys));plot.add((xs, ys1,"c-o"));plot.add((ys2,"r-"));plot.show();

multiple graphs

Label the x and y axis and set a title:

use graplot::{x,Plot};letmut plot =Plot::new((|x:f64| x.cos(),x(6.)));plot.set_title("cosine wave");plot.set_xlabel("x axis");plot.set_ylabel("y axis");plot.show();

cosine labeled

Collatz Conjecture:

collatz conjecture

Draw pie charts:

use graplot::Pie;// without labels: let pie = Pie::new([35., 25., 25., 15.]);let draw =[(35.,"label"),(25.,"len"),(25.,"labeled"),(15.,"test")];let pie =Pie::new(draw);pie.show();

pie chart

Sine wave:

use graplot::Plot;letmut xs =[0.;1000];letmut add =0f64;for idxin0..1000{    xs[idx] = add/1000.;    add +=1.;}letmut ys =[0.;1000];for(i, y)in ys.iter_mut().enumerate(){*y =(2.* std::f64::consts::PI* xs[i]).sin();}// or alternatively: let plot = Plot::new((|x: f64| x.sin(), x(4.)));let plot =Plot::new((xs, ys));plot.show();

sine wave example

x³ + x² - 0.08:

use graplot::{Plot, x};// x(...) ... sets the absolute max value for xlet plot =Plot::new((|x:f64| x.powf(3.) + x.powf(2.) -0.08,x(1.)));plot.show();

pol3

x² - 0.5:

use graplot::Plot;let plot =Plot::new(|x:f64| x.powf(2.) -0.5);plot.show();

x squared example

Use the Polynomial struct or polynomial() function to create a polynomial function that runs through all given points:

use graplot::{x,Plot,Polynomial};let poly =Polynomial::new(&[2.,3.,1.],&[2.,3.,2.]);let plot =Plot::new((poly,x(10.)));plot.show();

polynomial functions runs through 3 points

Draw bar graphs:

use graplot::Bar;letmut bar =Bar::new(["Ferris","Stefan","Test"],&[100.,200.,700.]);bar.set_title("title");bar.set_xlabel("test");bar.show();

bar graph

Using a line description: (matplotlib)

use graplot::Plot;// c ... cyan color, - ... solid line, o ... ring markerlet plot =Plot::new(([-4., -3., -3.4, -3.75, -4.1],"c-o"));plot.show();

line desc example

Draw graphs with nodes and egdes:

use graplot::{Graph,RED, graph::GraphDesc,Color};letmut graph =Graph::new();graph.graph_desc =GraphDesc{node_color:RED,outer_ring:(Color::new(1.,0.5,0.8,1.),3.5),    ..Default::default()};let a = graph.add_node(vec![]);let b = graph.add_node(vec![]);let c = graph.add_node(vec![]);let d = graph.add_node(vec![a.idx, b.idx]);let e = graph.add_node(vec![a.idx, c.idx]);graph.add_node(vec![d.idx, e.idx, b.idx]);graph.show();

graph

Custom scaling:

use graplot::{Desc,Plot, x};letmut plot =Plot::new((|x:f64| x.cos(),x(2.)));plot.set_desc(Desc{min_steps_x:6.,spacing_x:47.,    ..Default::default()});plot.show();

Spawning multiple windows on linux (currently not working):

letmut plot =Plot::new(|x:f64| x.powf(3.) + x.powf(2.) -0.08);plot.set_title("x^3 + x^2 - 0.08");let h = plot.show_threaded()// show_threaded() is currently linux only;letmut plot =Plot::new(|x:f64| x.powf(2.) +0.08);plot.set_title("x²");plot.show();h.join().unwrap()// you need to close both windows

multiple windows

Changelog

  • 0.1.22: added ToF64
  • 0.1.22: added graphs (nodes, edges)
  • 0.1.19: negative value bars
  • 0.1.18: bugfixes
  • 0.1.17: basic 3d plotting
  • 0.1.16: coloring,
  • 0.1.15: easier colored bars
  • 0.1.14: ???
  • 0.1.13: added pie charts
  • 0.1.12: added bar graphs
  • 0.1.11: added scatter plots
  • 0.1.10: create polynomial functions with a set of points
  • 0.1.9: fixed bug
  • 0.1.8: set color now uses 3 args, fixed step size
  • 0.1.7: Set graph color, custom x & y "line" spacing and step size | "custom scaling"
  • 0.1.6: Label x axis, litequad
  • 0.1.5: y axis, set title, /mutliple windows on linux/ | yanked
  • 0.1.4: Multiple graphs

[8]ページ先頭

©2009-2025 Movatter.jp