knitr::opts_chunk$set( collapse = TRUE, comment = "#>", out.width = "300px", fig.align = "center", dpi = 300 ) library(dplyr) library(ggplot2) theme_set(theme_bw()) library(rticulate)
It is possible to transform the coordinates of your spline data from cartesian to polar and vice versa, with transform_coord()
.
Let's attach the package rticulate
and load the data set tongue
.
library(rticulate) data(tongue) tongue
Now let's convert the cartesian coordinates to polar.
transform_coord()
converts to polar coordinates by default.
Your data set must contain columns named X
and Y
with, respectively, the x and y coordinates (if the columns are named differently, you will have to rename them).
The function extracts xy
data from two fan lines (the defaults are 10
, and 25
), and it uses these data to find the origin.
By default, a column named fan_line
is used for the fan lines number, but it can be supplied by the user with the argument fan_line_col
as a string.
If you have imported data using read_aaa()
, the defaults will work, so you can just use transform_coord(your-data)
.
polar <- tongue %>% filter(speaker == "it01") %>% transform_coord()
The function returns a data set with two new columns: radius
and theta
.
It also prints the calculated origin.
If you get an error relating to lm.fit
, try to change the fan_lines
to values different from the default.
We can now plot the contours using polar coordinates in a cartesian system. Notice that the tip of the tongue is on the left (rather than the right, as in the original data).
polar %>% ggplot(aes(angle, radius, colour = c2_place)) + geom_point() + scale_colour_discrete(name = "Place of C2") + theme(legend.position = "top")
Plotting in polar coordinates gives a sense of the actual shape of the tongue, but it is a bit trickier and it does not look very nice... (the tip is again on the left).
polar %>% ggplot(aes(angle, radius, colour = c2_place)) + geom_point(alpha = 0.5) + scale_colour_discrete(name = "Place of C2") + coord_polar(start = pi) + xlim(min(polar$angle) - pi / 2, max(polar$angle) + pi / 2) + ylim(0, max(polar$radius)) + theme_void() + theme(legend.position = "top")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.