Plots is a graph plotting app for GNOME.

Overview

Plots CI

Plots icon

Plots is a graph plotting app for GNOME. Plots makes it easy to visualise mathematical formulae. In addition to basic arithmetic operations, it supports trigonometric, hyperbolic, exponential and logarithmic functions, as well as arbitrary sums and products.

Plots is designed to integrate well with the GNOME desktop and takes advantage of modern hardware using OpenGL, and currently supports OpenGL 3.3+.

Download on Flathub

Other Methods of Installation

We are looking for volunteers to help us make native packages of Plots for Fedora, Arch and other major distributions. It would be great if you could help either by packaging, or by getting the following into the official repositories.

Distribution Package Maintainer
Ubuntu PPA Archisman Panigrahi
Debian .deb installer Archisman Panigrahi
Arch AUR/AUR(git) Mubashshir

Scroll down and click on a package name to download the .deb file from the PPA to use it in Debian.

You can also install with Python. Open a terminal in the repository and run

# python3 setup.py install

Note that this method does not currently install the icon, font or .desktop files. You can then run Plots using the plots command.

Screenshots

Screenshot showing plot of sawtooth, square, triangle and sine waves Screenshot showing plot of cot(x), sin(cot(x)) and sinh(x) Screenshot showing plot of sin(x) and its Taylor approximation Screenshot showing variables with sliders

Development

Running from source

To run directly without installation, open a terminal in the root of the repository and run

$ python3 -m plots

Building the Flatpak

To generate the manifest for the python modules, download flatpak-pip-generator and run

$ python3 flatpak-pip-generator --requirements-file=flatpak-requirements.txt --no-build-isolation

It is only necessary to do this when flatpak-requirements.txt changes.

Then build and install the Flatpak using

$ flatpak-builder --user --install build --force-clean com.github.alexhuntley.Plots.json
Comments
  • Strange artefacting when doing y = x^(4/3)

    Strange artefacting when doing y = x^(4/3)

    Screenshot speaks for itself I think:

    image

    This only happens on my laptop which uses Intel graphics (Intel HD 5000). My desktop, which uses NVIDIA graphics with the proprietary driver version 495.46, does not exhibit this issue:

    image

    Plots was installed from Flathub on both systems.

    opened by Newbytee 10
  • Created PPA and updated README with installation instructions

    Created PPA and updated README with installation instructions

    I have created a PPA for Ubuntu and derivatives. I have tested that it works in Linux Mint 20. The .deb package automatically downloads the Latin Modern Math font after the installation, and the user experience should be identical to the flatpak version (but the total download size would be less than 1 MB).

    I have also added the installation instructions for the PPA and with setup.py.

    Once this is merged, I can also create a Daily Builds PPA, which will use the latest code in this repository to automatically build a .deb package in Launchpad.

    opened by apandada1 10
  • Not working ^

    Not working ^

    Coming from https://github.com/flathub/flathub/pull/2036

    I still can't make ^ work properly, the issue is probably related to my locale

    bilelmoussaoui@fedora ~ > locale 
    LANG=en_US.UTF-8
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    

    That's all I get from the terminal

    bilelmoussaoui@fedora ~/P/contrast (wip/cdavis/gtk4) [SIGINT]> flatpak run com.github.alexhuntley.Plots
    Traceback (most recent call last):
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 264, in on_pointer_move
        self.cursor.mouse_select(element, direction, drag=True)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 341, in mouse_select
        self.selection_bounds, self.selection_ancestor = self.calculate_selection()
    TypeError: cannot unpack non-iterable NoneType object
    Traceback (most recent call last):
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 147, in do_draw_cb
        self.expr.draw(ctx, self.cursor, widget_transform)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 652, in draw
        super().draw(ctx, cursor, widget_transform)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 551, in draw
        self.index_in_parent in cursor.selection_bounds:
    TypeError: argument of type 'NoneType' is not iterable
    Traceback (most recent call last):
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 147, in do_draw_cb
        self.expr.draw(ctx, self.cursor, widget_transform)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 652, in draw
        super().draw(ctx, cursor, widget_transform)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 551, in draw
        self.index_in_parent in cursor.selection_bounds:
    TypeError: argument of type 'NoneType' is not iterable
    Traceback (most recent call last):
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 264, in on_pointer_move
        self.cursor.mouse_select(element, direction, drag=True)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 341, in mouse_select
        self.selection_bounds, self.selection_ancestor = self.calculate_selection()
    TypeError: cannot unpack non-iterable NoneType object
    Traceback (most recent call last):
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 264, in on_pointer_move
        self.cursor.mouse_select(element, direction, drag=True)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 341, in mouse_select
        self.selection_bounds, self.selection_ancestor = self.calculate_selection()
    TypeError: cannot unpack non-iterable NoneType object
    Traceback (most recent call last):
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 264, in on_pointer_move
        self.cursor.mouse_select(element, direction, drag=True)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 341, in mouse_select
        self.selection_bounds, self.selection_ancestor = self.calculate_selection()
    TypeError: cannot unpack non-iterable NoneType object
    Traceback (most recent call last):
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 147, in do_draw_cb
        self.expr.draw(ctx, self.cursor, widget_transform)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 652, in draw
        super().draw(ctx, cursor, widget_transform)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 551, in draw
        self.index_in_parent in cursor.selection_bounds:
    TypeError: argument of type 'NoneType' is not iterable
    Traceback (most recent call last):
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 147, in do_draw_cb
        self.expr.draw(ctx, self.cursor, widget_transform)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 652, in draw
        super().draw(ctx, cursor, widget_transform)
      File "/app/lib/python3.8/site-packages/plots/formula.py", line 551, in draw
        self.index_in_parent in cursor.selection_bounds:
    TypeError: argument of type 'NoneType' is not iterable
    Shader compile failure (0): b"0:74(9): error: `s' undeclared\n0:74(2): error: `return' with wrong type error, in function `formula0' returning float\n"
    Shader compile failure (0): b"0:74(9): error: `s' undeclared\n0:74(11): error: `i' undeclared\n0:74(9): error: operands to arithmetic operators must be numeric\n0:74(2): error: `return' with wrong type error, in function `formula0' returning float\n"
    Shader compile failure (0): b"0:74(9): error: `sin' undeclared\n0:74(2): error: `return' with wrong type error, in function `formula0' returning float\n"
    

    I think it could need some "Help page" with the list of operations you can use and how you can type them :)

    opened by bilelmoussaoui 9
  • Color picker improvements

    Color picker improvements

    What do you think about making the color selection task simpler by converting the color selection to a popup dialog? grafik

    It would make imho the mouse travel shorter and the selection more intuitive.

    opened by tronta 7
  • Migration to GTK 4.0 / Libadwaita

    Migration to GTK 4.0 / Libadwaita

    Interested to know if migration to GTK 4.0 or Libadwaita, as a replacement for Handy, is in the development roadmap. This is more of a feature request more than anything.

    opened by ericlesslie 6
  • Create Settings

    Create Settings

    Is it possible to have a setting section? I'd like to choose colors of axis and background (night mode) and I'd like to turn on number on the default grid

    opened by airon90 5
  • Add build dependency of pytest

    Add build dependency of pytest

    It was failing to build on Launchpad, and showed ModuleNotFoundError: No module named 'pytest'. After adding this build dependency the PPA package works again.

    opened by apandada1 5
  • Port to libhandy + opt-in to dark style preference

    Port to libhandy + opt-in to dark style preference

    These changes enables Plots to follow system theme in GNOME 42, it requires libhandy 1.6. Although representation area would probably need some CSS to make it fully dark style.

    Captura desde 2022-04-10 15-14-30 Captura desde 2022-04-10 15-54-18

    opened by oscfdezdz 3
  • Error While installing Plots using the AUR

    Error While installing Plots using the AUR

    System information :

    Operating System: Manjaro Linux KDE Plasma Version: 5.22.5 KDE Frameworks Version: 5.87.0 Qt Version: 5.15.2 Kernel Version: 5.10.70-1-MANJARO (64-bit)

    Error during installation:

    ...
    ==> Starting check()...
    running test
    WARNING: Testing via this command is deprecated and will be removed in a future version. Users looking for a generic test entry point independent of test runner are encouraged to use tox.
    running egg_info
    creating Plots.egg-info
    writing Plots.egg-info/PKG-INFO
    writing dependency_links to Plots.egg-info/dependency_links.txt
    writing entry points to Plots.egg-info/entry_points.txt
    writing requirements to Plots.egg-info/requires.txt
    writing top-level names to Plots.egg-info/top_level.txt
    writing manifest file 'Plots.egg-info/SOURCES.txt'
    reading manifest file 'Plots.egg-info/SOURCES.txt'
    adding license file 'COPYING'
    writing manifest file 'Plots.egg-info/SOURCES.txt'
    running build_ext
    Unable to init server: Could not connect: Connection refused
    Unable to init server: Could not connect: Connection refused
    Unable to init server: Could not connect: Connection refused
    
    (setup.py:154794): Gtk-WARNING **: 17:29:40.975: cannot open display: 
    ==> ERROR: A failure occurred in check().
        Aborting...
    Finished with result: exit-code
    Main processes terminated with: code=exited/status=4
    Service runtime: 7.559s
    CPU time consumed: 1.901s
    

    However I can install plots with python3, works fine.

    #47 Might solve the issue !

    opened by Z35hLy48k 3
  • Hungarian translation

    Hungarian translation

    https://github.com/alexhuntley/Plots/issues/20#issuecomment-921202955

    Can you please add the .mo file? Or how does one create the .mo file using the web browser?

    Is the folder hu or hu-HU?

    Thank you

    opened by ovari 3
  • Clarification about dependencies

    Clarification about dependencies

    Right now, plot fails to build in Arch Linux and Ubuntu with the following error.

    ModuleNotFoundError: No module named 'glm'
    

    Is it this library? https://pypi.org/project/glm/ Is it something else?

    opened by apandada1 3
  • Icon polish

    Icon polish

    The current icon is in-style, but a bit low on details, and not as geometric as it could be. Here's a quick attempt to make it a little bit more unique and interesting:

    image

    opened by bertob 0
  • Improve contrast

    Improve contrast

    Currently functions can be hard to see, both because the grid lines are very strong, and also because the function lines have different thicknesses depending on how steep they are. I'd recommend toning down the grid, and making the line thickness the same regardless of the function.

    image

    opened by bertob 0
  • AdwAboutWindow

    AdwAboutWindow

    Hello! This is an attempt to port the app to use the new AdwAboutWindow:

    To be able to use AdwAboutWindow, I had to update the runtime to GNOME 43, but that breaks the NumPy build, so I applied the workaround suggested here.

    Please tell me if I'm doing anything wrong, I'm still kinda new to this, despite following GTK (and libadwaita) internals for years.

    opened by bugaevc 0
  • Reduce the color contrast between the grid and the axes

    Reduce the color contrast between the grid and the axes

    Hi!

    Can you please consider reducing the contrast between the color of the grid and that of the main axes?

    Schermata del 2022-11-20 09-53-15

    As you see, it's pretty difficult to distinguish them. Also, the grid is so promiment that it makes difficult to see some functions of parts of them. In fact, have you noticed that in the above picture I plotted f(x) = 2? 👀

    opened by amivaleo 0
Owner
Alex Huntley
Alex Huntley
Design custom QR codes with this web app!

My-QR.Art This web app lets users design their own QR codes to any domain. It can be acessed on my-qr.art. You can find some more background info abou

Marien Raat 406 Dec 20, 2022
python app to turn a photograph into a cartoon

Draw This. Draw This is a polaroid camera that draws cartoons. You point, and shoot - and out pops a cartoon; the camera's best interpretation of what

Dan Macnish 2k Dec 19, 2022
Glyphtracer is an app for converting images of letters to a font

Glyphtracer takes an image that contains pictures of several letters. It recognizes all them and lets the user tag each letter to a Unicode code point. It then converts the images to vector form and writes them to a FontForge's data format. The font can then be finalized with FontForge.

Jussi Pakkanen 38 Dec 24, 2022
This Web App lets you convert your Normal Image to a SKETCHED one within a minute

This Web App lets you convert your Normal Image to a SKETCHED one within a minute

Avinash M 25 Nov 10, 2022
This is an app that allows users to upload photos and display and store the photos in a file until the user deletes them.

Qt Photo App This is an app that allows users to upload photos and display and store the photos in a file until the user deletes them. Setup python3 -

Kathy Yang 5 Jan 22, 2022
Create a QR-code Generator app using only Python.

QR-code_Generator Create a QR-code Generator app using only Python. This apps generated a QR code for a single link. Libraryes used in this app --> py

Soham P Phasalkar 1 Oct 17, 2021
This app finds duplicate to near duplicate images by generating a hash value for each image stored with a specialized data structure called VP-Tree which makes searching an image on a dataset of 100Ks almost instantanious

Offline Reverse Image Search Overview This app finds duplicate to near duplicate images by generating a hash value for each image stored with a specia

null 53 Nov 15, 2022
Simple AI app that is guessing color of apple in picture

Apple Color Determinant Application that is guessing color of apple from image Install Pillow, sklearn and numpy, using command for your package manag

Gleb Nikitin 1 Oct 25, 2021
Forza painter app with python

forza-painter Discord: A-Dawg#0001 (AE) Supports: Forza Horizon 5 Offically (OTHER v1.405.2.0, MS STORE v3.414.967.0, STEAM v1.414.967.0) Unofficially

null 320 Dec 31, 2022
Image Compression GUI APP Python: PyQt5

Image Compression GUI APP Image Compression GUI APP Python: PyQt5 Use : f5 or debug or simply run it on your ids(vscode , pycham, anaconda etc.) socia

Sourabh Dhalia 1 May 21, 2022
Qrgenerator - A qr generator app using python3

qrgenerator by Mal4D Hi welcome into qr code generator using python by Mal4d Lin

Mal4D 1 Jan 9, 2022
Hacking github graph with a easy python script

Hacking-Github-Graph Hacking github graph with a easy python script Requirements git latest version installed. A text editor (eg: vs code, sublime tex

SENPAI LEGEND 1 Nov 1, 2021
SGTL - Spectral Graph Theory Library

SGTL - Spectral Graph Theory Library SGTL is a python library of spectral graph theory methods. The library is still very new and so there are many fe

Peter Macgregor 6 Oct 1, 2022
Glyph-graph - A simple, yet versatile, package for graphing equations on a 2-dimensional text canvas

Glyth Graph Revision for 0.01 A simple, yet versatile, package for graphing equations on a 2-dimensional text canvas List of contents: Brief Introduct

Ivan 2 Oct 21, 2022
DP2 graph edit codes.

必要なソフト・パッケージ Python3 Numpy JSON Matplotlib 動作確認環境 MacBook Air M1 Python 3.8.2 (arm64) Numpy 1.22.0 Matplotlib 3.5.1 JSON 2.0.9 使い方 draw_time_histgram(

null 1 Feb 19, 2022
Read-only mirror of https://gitlab.gnome.org/GNOME/pybliographer

Pybliographer Pybliographer provides a framework for working with bibliographic databases. This software is licensed under the GPLv2. For more informa

GNOME Github Mirror 15 May 7, 2022
Read-only mirror of https://gitlab.gnome.org/GNOME/meld

About Meld Meld is a visual diff and merge tool targeted at developers. Meld helps you compare files, directories, and version controlled projects. It

GNOME Github Mirror 847 Jan 5, 2023
Read-only mirror of https://gitlab.gnome.org/GNOME/ocrfeeder

================================= OCRFeeder - A Complete OCR Suite ================================= OCRFeeder is a complete Optical Character Recogn

GNOME Github Mirror 81 Dec 23, 2022
MPL Plotter is a Matplotlib based Python plotting library built with the goal of delivering publication-quality plots concisely.

MPL Plotter is a Matplotlib based Python plotting library built with the goal of delivering publication-quality plots concisely.

Antonio López Rivera 162 Nov 11, 2022
Plots the graph of a function with ASCII characters.

ASCII Graph Plotter Plots the graph of a function with ASCII characters. See the change log here. Developed by InformaticFreak (c) 2021 How to use py

InformaticFreak 2 Apr 29, 2022