pydrawer ?


The Python package for visualizing curves and linear transformations in a super simple way.

✏️ Installation

Install pydrawer package with pip:

$ pip install pydrawer

or clone the repository:

$ git clone

✏️ Usage

? Drawing curves

To start drawing curves you need to create a GraphingCalculator object:

from pydrawer import GraphingCalculator

graphing_calculator = GraphingCalculator()

pydrawer let you draw parametrized curves and mathematical functions. Lets create and draw the square root of x function for this example:

def square_root(x):
    return x ** (1 / 2)

graphing_calculator.draw(square_root, (0, 25))  # We want to draw the function from x = 0 to x = 25

You can also accomplish the same result by defining the square root of x as a parameterized function:

def square_root(t):
    return t, t ** (1 / 2)

graphing_calculator.draw(square_root, (0, 25))  # We want to draw the curve from t = 0 to t = 25

? Linear transformations

pydrawer provides a curves module which contains functions for modifying curves with linear transformations.

from pydrawer import curves

? curves.transform_curve()

This function let you apply a linear transformation (specified as a matrix) to a parametrized curve. curves.transform_curve() returns the transformed curve.


  • curve: parametrized curve
  • matrix: linear transformation’s matrix

The matrix is a tuple of tuples (or list of lists) which has the same structure as numpy arrays. A matrix [ a b ][ c d ] should be defined as:

matrix = ((a,b), (c,d))


matrix = ((1, 0), (0, -2))
graphing_calculator.draw(curves.transform_curve(square_root, matrix), (0, 25))

? curves.rotate_curve()

Rotates a curve anticlockwise by the given angle.


  • curve: parametrized curve
  • angle: angle in radians Example:

angle = pi / 4  # 90 degrees
graphing_calculator.draw(curves.rotate_curve(square_root, angle), (0, 25))

? curves.scale_curve()

Scales the given curve by the given scalar.


  • curve: parametrized curve
  • scalar: scalar for scaling the curve Example:

scalar = 2  # The function is going to be twice as bigger
graphing_calculator.draw(curves.scale_curve(square_root, 2), (0, 25))


View Github