10
$\begingroup$

This answer at Math.SE contains a neat contour diagram created using Mathematica:

What Mathematica functions I can use to draw diagrams like this?

$\endgroup$
1
  • 1
    $\begingroup$ Line, Arrow and Circle inside Graphics; also Point and Text. I imagine the contour was done "by hand", so to speak, inserting appropriate coordinates. $\endgroup$ – Michael E2 May 22 '13 at 0:32
7
$\begingroup$

Here's a quick 5 minute reproduction of the diagram (I've left the labeling of individual points out):

enter image description here

With[{ε = 0.05, L = 1, thick = AbsoluteThickness[1]}, 
    Graphics[{
        thick, 
        Circle[{0, 0}, ε, {π/2, 3 π/2}], 
        Arrowheads[{{0.05, 0.99}}], 
        Arrow[{{0, -ε}, {L, -ε}, {L, -L}, {-L, -L}, {-L, L}, {L, L}, {L, ε}, {0, ε}}], 
        Text[Style["\!\(\*SubscriptBox[\(C\), \(n\)]\)", FontSize -> 15], {L/2, 0.1}]
    }, Axes -> True, AxesStyle -> thick, Ticks -> False]
]

The key points to make life simple are:

  • Use a single Arrow chain for the entire length.
  • Use the appropriate definition of Arrowheads to specify the position of the arrow head.
  • Use AbsoluteThickness to get a uniform thickness.
  • Use the 3 argument form of Circle to draw arcs.
$\endgroup$
6
$\begingroup$
Graphics[{Circle[{0, 0}, 1, Pi/2 {1, 3}], 
           Arrow[{{10, 1}, {0, 1}}], 
            Line[{{0, 1}, {10, 1}, {10, 10}, {-10, 10}, {-10, -10}, {10, -10}, {10, -1}, {0, -1}}]},
         Axes -> True, Ticks -> None]

enter image description here

$\endgroup$
2
  • $\begingroup$ Congratulations on 30K and 81K network, belisarius. :-) $\endgroup$ – Mr.Wizard May 22 '13 at 5:47
  • $\begingroup$ @Mr.Wizard Thanks a lot :) $\endgroup$ – Dr. belisarius May 22 '13 at 11:48
1
$\begingroup$

One can use Arrow as following.

pts = {{0, -1}, {10, -1}, {10, -10}, {-10, -10}, {-10, 10}, {10, 10}, {10, 1}};
Graphics[{Circle[{0, 0}, 1, Pi/2 {1, 3}], Arrowheads[{0, 0.03, 0}], 
  Arrow[{{10, 1}, {0, 1}}], Arrow[Partition[pts, 2, 1]]}, 
 Axes -> True, AxesStyle -> AbsoluteThickness@1, Ticks -> None]

enter image description here

And replace Arrowheads[{0, 0.03, 0}] to Arrowheads[{0, 0.03, 0.03, 0}] to get

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.