Here is my todo list and what i've done:
- Using
FrameTicks
on specific points only (failed). - Plotting six graphs with
Table
onParametricPlot
(Success). - Marking each graph with
Mesh
"independently" (have no idea, but have the related topic, See 8). - Coloring each graph (failed).
- Legending each graph (works but only the first graph).
I will explain the point $(3)$ with this sketch (simplification drawing):
The distance between two marks based on the codomain should have the same length.
Here is my attempt without different marks:
M = 5;
markers = {{"*", 25}, {"@", 10}, {"$", 15}, {"#", 10}, {"&",
10}, {"+", 25}};
mesh = {Most@Subdivide[-2, 2.8, 5]};
eqn = Table[
2 M/t (\[Theta] Cot[\[Theta]] + I \[Theta]), {t, {9, 19, 24, 29,
39, 49}}];
ticks = {{{-5, -2}, -4, -3, -2, -1, 0, 1}, {-Pi, Pi}, {}, {}};
graph = ParametricPlot[ReIm@eqn, {\[Theta], -3.14, 3.14},
AspectRatio -> 1,
FrameLabel -> {"Re(s(\[Theta]))", "Im(s(\[Theta]))"},
Frame -> True, FrameTicks -> ticks, PlotStyle -> Thick,
Axes -> False, MeshFunctions -> {#2 &}, Mesh -> mesh,
MeshStyle -> PointSize[Large],
PlotLegends ->
Placed[LineLegend[{"t=9", "t=19", "t=24", "t=29", "t=39", "t=49"},
LegendFunction -> "Frame"], {.85, .8}]]
The Output:
The markings still sharing the same scale and not evaluated on each graph, has no coloring, FrameTicks
doesn't work, and the Legend only shows $1$ graph.
Meanwhile, when i try to add the different markings, it becomes messy and there's an error message
M = 5;
markers = {{"*", 25}, {"@", 10}, {"$", 15}, {"#", 10}, {"&",
10}, {"+", 25}};
mesh = {Most@Subdivide[-2, 2.8, 5]};
eqn = Table[
2 M/t (\[Theta] Cot[\[Theta]] + I \[Theta]), {t, {9, 19, 24, 29,
39, 49}}];
ticks = {{{-5, -2}, -4, -3, -2, -1, 0, 1}, {-Pi, Pi}, {}, {}};
graph = ParametricPlot[ReIm@eqn, {\[Theta], -3.14, 3.14},
AspectRatio -> 1,
FrameLabel -> {"Re(s(\[Theta]))", "Im(s(\[Theta]))"},
Frame -> True, FrameTicks -> ticks, PlotStyle -> Thick,
Axes -> False, MeshFunctions -> {#2 &}, Mesh -> mesh,
MeshStyle -> PointSize[Large],
PlotLegends ->
Placed[LineLegend[{"t=9", "t=19", "t=24", "t=29", "t=39", "t=49"},
LegendFunction -> "Frame"], {.85, .8}]];
meshStyles =
Association[
Join @@ Cases[
graph, {___, Directive[___, c_?ColorQ, ___], Line[x_]} :>
Thread[x -> c], All]];
styleToMarkers =
AssociationThread[ColorData[97] /@ Range[3], Style @@@ markers];
graph /. Point[
x_] :> ({meshStyles@#, Text[styleToMarkers[meshStyles@#], #]} & /@
x)
Output:
And i wish i have something like this:
Hope my question isn't too much and you want to help me. Thanks in advance!
Here is my references: