Type: | Package |
Title: | Chaos Game |
Version: | 1.5 |
Description: | The main objective of the package is to enter a word of at least two letters based on which an Iterated Function System with Probabilities is constructed, and a two-dimensional fractal containing the chosen word infinitely often is generated via the Chaos Game. Additionally, the package allows to project the two-dimensional fractal on several three-dimensional surfaces and to transform the fractal into another fractal with uniform marginals. |
Depends: | R (≥ 2.10), rgl, colorRamps |
Imports: | ggplot2, gridExtra, plot3D, RColorBrewer, |
License: | GPL-2 |
Encoding: | UTF-8 |
RoxygenNote: | 7.1.1 |
NeedsCompilation: | no |
Packaged: | 2025-07-05 16:39:17 UTC; b1082470 |
Maintainer: | Lea Maislinger <lea.maislinger@plus.ac.at> |
Repository: | CRAN |
Date/Publication: | 2025-07-05 23:00:11 UTC |
Author: | Lea Maislinger [aut, cre], Thimo Kasper [aut], Florian Griessenberger [aut], Manuela Schreyer [aut], Johannes Bartel [aut], Wolfgang Trutschnig [aut] |
Plot the 2D fractal containing the chosen word
Description
The function allows to enter a word of at least two letters based on which an Iterated Function System with Probabilities (IFSP) is constructed. This IFSP is then used to generate a two-dimensional fractal containing the chosen word infinitely often, which is then plotted (and optionally probability-integral-transformed).
Usage
plot_word(
word = "copula",
R = 20,
phi = 0,
copula = FALSE,
portion = 0.2,
shift = 1.2,
orbit = 3000,
letter_type = 1
)
Arguments
word |
Word which the fractal should contain infinitely often. |
R |
Number of runs of the chaos game. |
phi |
Angle of the rotation. |
copula |
logical. If TRUE the sample is (approximately) probability-integral-transformed. |
portion |
Portion based on which the empirical distribution functions are calculated, if |
shift |
Distance between letters. |
orbit |
Number of steps in each run of the chaos game. |
letter_type |
integer, which indicates the type of the letters. Options are 1 (default) or 2 (round letters). |
Examples
#Function with word as input, constructs the IFSP and runs the chaos game:
# for nice results use, for example, R = 20 and orbit = 3000
A <- plot_word(word = "copula", R = 50, orbit = 100)
#plot without histograms of the marginal distributions
plot(A, pch =19, col = 4, cex = 0.1)
# further examples:
# with round letters
# A <- plot_word(word = "copula", R = 100, orbit = 300, letter_type = 2)
# with rotation
# A <- plot_word(word = "copula", R = 100, orbit = 300, phi = pi/8)
# A <- plot_word(word = "fractal", R = 100, orbit = 300, phi = pi/6)
# (approximately) probability-integral-transformed
# A <- plot_word(word = "copula", R = 100, orbit = 300, phi = pi/8, copula = TRUE)
# A <- plot_word(word = "fractal", R = 100, orbit = 300, phi = pi/6, copula = TRUE)
Plot the 3D fractal containing the chosen word
Description
The function allows to enter a word of at least two letters based on which an Iterated Function System with Probabilities (IFSP) is constructed. This IFSP is then used to generate a two-dimensional fractal containing the chosen word infinitely often, which is then projected onto several three-dimensional surfaces. Optionally, the projection is transformed into another fractal with uniform marginals.
Usage
plot_word3D(
word = "copula",
R = 20,
plot.rgl = TRUE,
copula = TRUE,
portion = 0.2,
color.rgl.plot = "green2magenta",
plot.surface = "Sphere",
histogram = TRUE,
shift = 1.2,
orbit = 3000,
cex.label = 0.7,
size.lines = 0.1,
Theta = 40,
Phi = 30,
Box = TRUE,
projection = TRUE,
letter_type = 1
)
Arguments
word |
Word which the fractal should contain infinitely often. |
R |
Number of runs of the chaos game. |
plot.rgl |
If |
copula |
logical. If TRUE the sample is (approximately) probability-integral-transformed. |
portion |
Portion based on which the empirical distribution functions are calculated, if |
color.rgl.plot |
Plotting color/color-range for the rgl-plot. One can choose between |
plot.surface |
Three-dimensional surface on which the two-dimensional fractal is projected. Options are |
histogram |
It is an option available only under the rgl-plot option (i.e if |
shift |
Distance between letters. |
orbit |
Number of steps in each run of the chaos game. |
cex.label |
Font size, for exporting as a pdf or png file (see examples). |
size.lines |
Line width, for exporting as a pdf or png file (see examples). |
Theta |
Angles defining the viewing direction. |
Phi |
Angles defining the viewing direction. |
Box |
If |
projection |
An option available only if |
letter_type |
integer, which indicates the type of the letters. Options are 1 (default) or 2 (round letters). |
Examples
# function with a word as input, runs the chaos game,
# calculates the copula transformation and projects the result on a sphere:
# for nice results use, for example, R = 20 and orbit = 3000
# A <- plot_word3D(word = "copula", copula = FALSE, R = 50, orbit = 100)
# further examples:
# projection of the fractal on the Enneper Minimal Surface:
# A <- plot_word3D(word = "copula", R = 75, orbit = 300, copula = FALSE,
# plot.surface = "EnneperMinimalSurface", histogram = FALSE)
# same example as before, now with histogram = TRUE
# A <- plot_word3D(word = "copula", R = 100, orbit = 300, copula = FALSE,
# plot.surface = "EnneperMinimalSurface")
# same example as before (approximately) probability-integral-transformed (i.e. copula = TRUE)
# A <- plot_word3D(word = "copula", R = 100, orbit = 300, copula = TRUE,
# plot.surface = "EnneperMinimalSurface")
# projection of the fractal on a Catalan Surface
# A <- plot_word3D(word = "copula", R = 100, orbit = 300, copula = FALSE,
# color.rgl.plot = "blue2green", plot.surface = "CatalanSurface")
# projection of the fractal on a Helix
# A <- plot_word3D(word = "copula", R = 100, orbit = 300, copula = FALSE,
# color.rgl.plot = "green2red", plot.surface = "Helix")
# projection of the fractal on a Torus
# A <- plot_word3D(word = "copula", R = 100, orbit = 300, copula = FALSE,
# color.rgl.plot = "blue2yellow", plot.surface = "Torus")
# projection of the fractal on a Sphere
# A <- plot_word3D(word = "copula", R = 100, orbit = 300, copula = FALSE,
# color.rgl.plot = "ygobb", plot.surface = "Sphere")
# Sphere (approximately) probability-integral-transformed (i.e. copula = TRUE)
# A <- plot_word3D(word = "copula", R = 100, orbit = 300, copula = TRUE,
# color.rgl.plot = "ygobb", plot.surface = "Sphere")
# scatter-plot with plot3D (i.e. plot.rgl = FALSE) for exporting as a pdf file
# pdf(file = "Sphere.pdf", width = 30, height = 25)
# A <- plot_word3D(word = "copula", R = 100, orbit = 300, copula = FALSE, plot.rgl = FALSE,
# plot.surface = "Sphere", cex.label = 1.8, size.lines = 0.001)
# dev.off()
#' # scatter-plot with plot3D (i.e. plot.rgl = FALSE) for exporting as a png file
# png(file = "Sphere.png", width = 5000, height = 4000)
# A <- plot_word3D(word = "copula", R = 100, orbit = 300, copula = FALSE, plot.rgl = FALSE,
# plot.surface = "Sphere", cex.label = 5, size.lines = 2)
# dev.off()