Matplotlib. Pyplot written in PHP. Graphs charts, scatter, plot, lines, custom graphs

Overview

php-libplot. Written in PHP. Graphs charts, scatter, plot, lines, custom graphs

Matplotlib. Pyplot written in PHP. Graphs charts, scatter, plot, lines, custom graphs

V.1.0.0

This class starts with the need to create graphics in the style of MatLibPlot, but in pure PHP language due to the use on shared servers with access restrictions to the system to install third-party applications. This first version performs a great variety of the best pyplot functions, combined with mathematical numpy functions commonly used in Machine Learning as linspace or arraypow.

It is based on the same functions already prepared intentionally with a regular use of MatibPlot and also written in PHP https://github.com/vivesweb/graph-php. That is why it is recommended to also read the documentation of this second class, where most of the methods used by PHP-LibPlot are original provided.

SAMPLES:

Sample of Pairplot(): PHP-LibPlot. PairPlot Graphs Matlibplot in PHP

Other Samples that you can generate with php-libplot and provided by inside php-graph class: PHP-LibPlot. Graphs Matlibplot in PHP PHP-LibPlot. Graphs Matlibplot in PHP PHP-LibPlot. Graphs Matlibplot in PHP

REQUERIMENTS:

- Requires php-graph library: https://github.com/vivesweb/graph-php

- A minimum (minimum, minimum, minimum requeriments is needed). Tested on:
	
- Simple Raspberry pi (B +	512MB	700 MHz ARM11) with Raspbian Lite PHP7.3 (i love this gadgets)  :heart_eyes:
	
- VirtualBox Ubuntu Server 20.04.2 LTS (Focal Fossa) with PHP7.4.3 

- Ubuntu 20.04.3 LTS (Focal Fossa). Laptop Acer Extensa 5630 with PHP 7.4.3 (built: Aug 13 2021 05:39:12) ( NTS )

- Red Hat Enterprise Linux Server release 6.10 (Santiago) PHP Version 7.3.25 (Production Server) 512Mb Memory Limit

SERVER REQUERIMENTS:

- PHP with GD enabled: sudo apt install php-gd

- If you need to use IMG_FILTER_SCATTER you need at least PHP >= PHP7.4.0. See official doc: https://www.php.net/manual/en/function.imagefilter.php

- PHP with Imagick for some functions. It is not required for by most methods, but in some, like reading pdf or psd, you will need it. Install: sudo apt install php-imagick

- Requires https://github.com/zaachi/PHP-Instagram-effects

What if I don't have Imagick installed?:

If you do not have Imagick installed and perform some filter that use imagick, the system just won't apply that filter.

FILES:

There are 2 basic files:

php-libplot.class.php -> Master class. This file is the main file that you need to include in your code.

example.php -> example file

NOTE:

In this earlier version, for see the graph, you need to call output_gd_png_base64( ) and draw directly in html object. See example file.

INSTALLATION:

A lot of easy 😃 . It is written in PURE PHP. Only need to include the files. Tested on basic PHP installation

     require_once( 'php-libplot.class.php' );

BASIC USAGE:

      $plt = new php_plotlib();
      $plt->plot( [1, 1.5, 2, 1.8, 3] );
      $plt->plot( [2, 2.8, 1.7, 2, 2.3] );
      $plt->title("Multi Line");
      echo '<img src="'.$plt->output_gd_png_base64( ).'">';

RESUME OF METHODS:

  • CREATE php_plotlib:

$tpl= new php_plotlib( );

  • CREATE SUBPLOTS:

You can create subplots inside a plot and manage they individually.

subplots( $numyplots = null, $numxplots = null, $cfg = [ 'bordertype' => 'square', 'figsize' => [6.4, 4.8], 'paddingleft' => .2, 'paddingbottom' => .15 ])

$numyplots: Number of vertical subplots $numxplots: Number of horizontal subplots $cfg: Configuration of subplots:

  • bordertype: ['square' | 'halfsquare']
  • figsize: size in inches (width, height), in inches
  • paddingleft: If you need space at left, you can to set here in inches
  • paddingbottom: If you need space at left, you can to set here in inches

Example:

    $plt = new php_plotlib();
    $plt->subplots( 2, 2 );
    $plt->subplots[0][0]->bar( [1, 2, 3, 4] );
    $plt->subplots[0][1]->bar( [10, 20, 30, 40] );
    $plt->subplots[1][0]->bar( [100, 200, 300, 400] );
    $plt->subplots[1][1]->bar( [11, 12, 13, 14] );
    
    echo '<img src="'.$plt->subplots[0][0]->output_gd_png_base64( ).'">';
    echo '<img src="'.$plt->subplots[0][1]->output_gd_png_base64( ).'">';
    echo '<br />';
    echo '<img src="'.$plt->subplots[1][0]->output_gd_png_base64( ).'">';
    echo '<img src="'.$plt->subplots[1][1]->output_gd_png_base64( ).'">';
  • PAIRPLOT:

You can create a pairplot graph from csv dataset in array. First row need to be col names.

In $cfg array you can set the width of the markers: ['widthmarker' => 5]

pairplot( $dataset, $cfg = null )

example:

// read csv

$dataset = [];
if (($gestor = fopen("ibex35.csv", "r")) !== FALSE) {
  	while (($datos = fgetcsv($gestor, 1000, ",")) !== FALSE) {
  			$dataset[] = $datos;
	}
fclose($gestor);
}

$plt = new php_plotlib();
$plt->pairplot( $dataset, ['widthmarker' => 6] );?>

<img width="1900" src="<?php echo $plt->output_gd_png_base64( );?>">

IMPORTANT NOTE!!! For other methods read https://github.com/vivesweb/graph-php documentation. Example.php file of php-libplot class uses some of the php-graph methods directly (plot, bar, title, ...) as example of use:

  • bar()
  • plot()
  • title()
  • xlabel()
  • ylabel()
  • axes()
  • legend()
  • set_drawguidelines()
  • set_x_drawguidelines(9
  • set_y_drawguidelines()
  • legendwidthlines()
  • legendlabelheight()
  • imread()
  • xticks()
  • scatter()
  • hist()
  • width()
  • height()
  • And a common math python funcions created in php as linspace, arraypow and others

Of course. You can use it freely 🖖 👽

By Rafa.

@author Rafael Martin Soto

@author {@link http://www.inatica.com/ Inatica}

@blog {@link https://rafamartin10.blogspot.com/ Rafael Martin's Blog}

@since OCTOBER 2021

@version 1.0.3

@license GNU General Public License v3.0

You might also like...
A sampling profiler for PHP written in PHP, which reads information about running PHP VM from outside of the process.

Reli Reli is a sampling profiler (or a VM state inspector) written in PHP. It can read information about running PHP script from outside of the proces

Formcreator is a plugin which allow creation of custom forms of easy access
Formcreator is a plugin which allow creation of custom forms of easy access

Formcreator is a plugin which allow creation of custom forms of easy access. At the same time, the plugin allow the creation of one or more tickets when the form is filled.

Envbar allows you to differentiate between environments by adding a custom colored bar above the top navigation.
Envbar allows you to differentiate between environments by adding a custom colored bar above the top navigation.

Envbar Envbar allows you to differentiate between environments by adding a custom colored bar above the top navigation. This should help backend users

Custom boss plugin for PocketMine-MP.

Bosses Custom boss plugin for PocketMine-MP. What is this plugin? This plugin adds entities that they have so much things to configure! How to create

This plugin adds custom pets to game for PocketMine-MP!
This plugin adds custom pets to game for PocketMine-MP!

ComplexPets A plugin that adds pets to game made by OguzhanUmutlu for PocketMine-MP. Command Simply type /pets and summon your favorite animal! Featur

Add custom armors, tools and many items!

CustomThings This plugin was created for the new version of Hiroshima and allows you to add tools, armors and items! Informations Here are the differe

Custom CSS for Elementor

This plugin will provide an option to write CSS in any Elementor native widgets. You will get an option to write CSS for multiple screen devices. The option is placed on ADVANCED_TAB on any Elementor native widgets even third-party widgets.

Plug-and-Play Custom Enchants Plugin For PocketMine-PMP
Plug-and-Play Custom Enchants Plugin For PocketMine-PMP

DEVELOPER'S NOTE: I can tell you right now this plugin hasn't been tested. I haven't even checked to see if it loads without crashing yet. Half of thi

Plug-and-Play Custom Enchants Plugin For PocketMine-PMP
Plug-and-Play Custom Enchants Plugin For PocketMine-PMP

DEVELOPER'S NOTE: I can tell you right now this plugin hasn't been tested. I haven't even checked to see if it loads without crashing yet. Half of thi

Owner
Rafael Martin Soto
PHP programmer. Passionate about PHP programming and artificial intelligence. Nice projects done with servers and raspberry pi ^_^
Rafael Martin Soto
Plot and protection plugin for PocketMine-MP

MyPlot Create, manage, and build in protected plots. Keep your builds safe from griefers! Official MyPlot precompiled builds can be found on Poggit at

Jason 101 Oct 28, 2022
Silverstripe-searchable - Adds to the default Silverstripe search by adding a custom results controller and allowing properly adding custom data objects and custom fields for searching

SilverStripe Searchable Module UPDATE - Full Text Search This module now uses Full Text Support for MySQL/MariaDB databases in version 3.* Adds more c

ilateral 13 Apr 14, 2022
Fly50W is a new language which helps you build simple apps using more than 500k lines of code easily.

Fly50W is a new language which helps you build simple apps using more than 500k lines of code easily. Installation

null 4 Jun 22, 2022
Integrate reCAPTCHA using async HTTP/2, making your app fast with a few lines.

ReCaptcha Integrate reCAPTCHA using async HTTP/2, making your app fast with a few lines. use Illuminate\Support\Facades\Route; Route::post('login', f

Laragear 14 Dec 6, 2022
Glz custom fields - Unlimited Custom Fields for Textpattern

Unlimited custom fields for Textpattern This plugin sits under the Extensions tab in the back-end and gives your custom fields new life. You can final

Gerhard Lazu 21 Dec 1, 2019
Magento 2 custom extension to add custom attributes(longitude, latitude) to customer address

Magento 2 custom extension to add custom attributes(longitude, latitude) to customer address. Then save them to quote model and copy them from quote address to order address on bakend, frontend, rest api

MageArab 2 Jul 14, 2022
Simple custom chat bot developing framework for telegram, qq and more in PHP (the best language)

RinoBot RinoBot 是一个为统一聊天机器人扩展开发的框架,编写一份插件用于多种机器人协议。 简体中文 | English ?? 开发中 ?? 暂不适用于生产环境 特性 插件扩展机制 一份代码运行于多平台多协议机器人 并减小开发难度 插件提供 Yaml 配置 供使用者修改 基于机器人 We

LixWorth 3 Apr 18, 2022
It allows frontend developer to send ajax requests and return a custom information from the server without a php developer help

[Magento 1 Extension] It allows frontend developer to send ajax requests and return a custom information from the server without a php developer help (without any php code).

Vladimir Fishchenko 62 Apr 1, 2022
A tool to create php lambda's in AWS via custom runtime api

Getting Started This composer library assists in the creation, configuration, and testing of an AWS Lambda function. It utilizes the AWS Lambda custom

Mike McGrath 0 Jul 13, 2022
A sampling profiler for PHP written in PHP, which reads information about running PHP VM from outside of the process.

Reli Reli is a sampling profiler (or a VM state inspector) written in PHP. It can read information about running PHP script from outside of the proces

null 272 Dec 22, 2022