PlotCoordinates
PlotCoordinates
Bases: DrawingObject
A class to manage plots in a tikz environment.
The PlotCoordinates class is used to represent the plot_coordinates functionality in TikZ. It is analagous to the TikZ command
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
options |
str)
|
String containing drawing options (e.g., "Blue") |
''
|
plot_options |
str)
|
String containing the plot options (e.g., "smooth cycle") |
''
|
points |
list)
|
A list of points to be drawn |
required |
center
property
Calculates the geometric center (centroid) of a collection of points.
This property computes the arithmetic mean of the x and y coordinates of all points in the collection. The result is a new Point object representing the centroid of these points.
Returns:
| Name | Type | Description |
|---|---|---|
Point |
Point
|
A Point object representing the geometric center of the collection of points. |
add_point
Adds a new point to the points list.
This method creates a new Point instance with the specified x and y coordinates,
and appends it to the points attribute of the class.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x |
int / float
|
The x-coordinate of the point. |
required |
y |
int / float
|
The y-coordinate of the point. |
required |
Returns:
| Type | Description |
|---|---|
|
None |
Examples
Introducing examples of PlotCoordinates gives us an opportunity to illustrate the optional parameter action. By default, action is "draw" (analogous to \draw in Tikz) so the code below
import tikzpy
tikz = tikzpy.TikzPicture()
points = [(2, 2), (4, 0), (1, -3), (-2, -1), (-1, 3)]
plot = tikz.plot_coordinates(points) # action="draw" by default
plot.plot_options = "smooth cycle, tension = 0.5"

Alternatively we can set action = "fill" (analogous to \fill in Tikz) as in the code below
import tikzpy
tikz = tikzpy.TikzPicture()
points = [(2, 2), (4, 0), (1, -3), (-2, -1), (-1, 3)]
plot = tikz.plot_coordinates(points, options="Blue", action="fill")
plot.plot_options = "smooth cycle, tension = 0.5"

If we want both, we can set action = "filldraw" (analogous to \filldraw in Tikz)
import tikzpy
tikz = tikzpy.TikzPicture()
points = [(2, 2), (4, 0), (1, -3), (-2, -1), (-1, 3)]
plot = tikz.plot_coordinates(points, options="Blue", action="filldraw")
plot.options = "fill=ProcessBlue!50"
plot.plot_options = "smooth cycle, tension = 0.5"
Finally, we can set action = "path" (analogous to \path in Tikz), but as one would expect this doesn't draw anything.
PlotCoordinates has methods .shift(), .scale, and .rotate, similar to the class Line, and the parameters behave similarly. These methods are more interestingly used on PlotCoordinates than on Line. For example, the code
import tikzpy
tikz = tikzpy.TikzPicture()
points = [(14.4, 3.2), (16.0, 3.6), (16.8, 4.8), (16.0, 6.8), (16.4, 8.8), (13.6, 8.8), (12.4, 7.6), (12.8, 5.6), (12.4, 3.6)]
for i in range(0, 20):
options = f"fill = {rainbow_colors(i)}, opacity = 0.7"
# Requires \usetikzlibrary{hobby} here
plot_options = "smooth, tension=.5, closed hobby"
plot = tikz.plot_coordinates(points, options, plot_options)
plot.scale((20 - i) / 20) # Shrink it
plot.rotate(15 * i) # Rotate it
