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
    Commented May 22, 2013 at 0:32

3 Answers 3

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
    Commented May 22, 2013 at 5:47
  • $\begingroup$ @Mr.Wizard Thanks a lot :) $\endgroup$ Commented May 22, 2013 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 and acknowledge you have read our privacy policy.

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