5

I want to draw the following graphic using tikz:

enter image description here

Is it possible to draw this without using any packages? I can draw the coordinate system as well as both of the arcs but how do I get the space in between filled and also the connections between the arcs give me trouble.

  • 3
    Welcome! Without using any packages, are you sure? You have to use at least one package if you use TikZ. Btw, please add a picture you have drawn so far, so we can have some addition if possible. – JouleV Mar 26 at 10:29
  • 1
    Okay, I will make a picture now and post it. Give me a couple of minutes. I just got an idea. – RedLantern Mar 26 at 10:33
10

You must load tikz package if you want to use TikZ :)) So I assume that you don't allow to load any additional packages.

In the following proposals, it seems that I don't use any packages. However, I do load one. \documentclass[tikz]{standalone} already load tikz.


The angles are drawn with quotes and angles libraries. They are not packages, so I hope this answer is valid.

\documentclass[tikz]{standalone}
\usetikzlibrary{quotes,angles}
\begin{document}
\begin{tikzpicture}
\draw[fill=black!20] (140:1) coordinate (beta) arc (140:-70:1) coordinate (alpha) -- (-70:2) arc (-70:140:2) -- cycle;
\draw (-2.5,0)--(2.5,0) coordinate (x);
\draw (0,-2.5)--(0,2.5);
\fill (1,0) circle (1pt) node[below right] {$c^a$} (2,0) circle (1pt) node[below right] {$c^b$};
\coordinate (o) at (0,0);
\pic[draw,<-,"$\alpha$",angle radius=0.4cm,angle eccentricity=1.4] {angle=alpha--o--x};
\pic[draw,->,"$\beta$",angle radius=0.6cm,angle eccentricity=1.3] {angle=x--o--beta};
\end{tikzpicture}
\end{document}

enter image description here


However, if you don't want to load a single library, you can play with arc and node[midway], although this is a bit more difficult

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[fill=black!20] (140:1) coordinate (beta) arc (140:-70:1) coordinate (alpha) -- (-70:2) arc (-70:140:2) -- cycle;
\draw (-2.5,0)--(2.5,0) coordinate (x);
\draw (0,-2.5)--(0,2.5);
\fill (1,0) circle (1pt) node[below right] {$c^a$} (2,0) circle (1pt) node[below right] {$c^b$};
\coordinate (o) at (0,0);
\draw[->] (0.4,0) arc (0:-70:0.4) node[midway,below right,inner sep=1pt] {$\alpha$};
\draw[->] (0.6,0) arc (0:140:0.6) node[below right,inner sep=0pt] {$\beta$};
\end{tikzpicture}
\end{document}

enter image description here


Recommended approach:

\documentclass[tikz]{standalone}
\usetikzlibrary{quotes,angles}
\begin{document}
\begin{tikzpicture}
\draw[fill=black!20] (140:1) coordinate (beta) arc (140:-70:1) coordinate (alpha) -- (-70:2) arc (-70:140:2) -- cycle;
\draw (-2.5,0)--(2.5,0) coordinate (x);
\draw (0,-2.5)--(0,2.5);
\fill (1,0) circle (1pt) node[below right] {$c^a$} (2,0) circle (1pt) node[below right] {$c^b$};
\coordinate (o) at (0,0);
\pic[draw,<-,"$\alpha$",angle radius=0.4cm,angle eccentricity=1.4] {angle=alpha--o--x};
\pic[draw,->,"$\beta$",angle radius=0.6cm,angle eccentricity=1.3] {angle=x--o--beta};
\draw[very thin,dashed] (alpha)--(o)--(beta);
\end{tikzpicture}
\end{document}

enter image description here

  • The reason why I don't want any packages is because I use LyX instead of LaTeX and often face issues with downloading packages and getting them to work. If there is a solution (like your second one) that doesn't require packages I'm glad. So thanks for altering your solution! – RedLantern Mar 26 at 10:48
  • @RedLantern If you don't want to load tikz, you have only one option: using the picture environment, which is definitely extremely difficult to use. – JouleV Mar 26 at 10:49
  • @RedLantern There are many questions here about how to use TikZ in LyX. Take this one, for example. – JouleV Mar 26 at 10:51
  • @RedLantern Btw I don't think you need to download packages manually. What is your TeX distribution (i.e. MiKTeX or TeX Live or something...)? – JouleV Mar 26 at 10:52
  • 1
    No, don't worry. I already got tikz installed and working. But it took a while and every time I need a new package it requires time and work to get it working so I prefer to know how to draw stuff in tikz with only the basic commands. – RedLantern Mar 26 at 10:55
7

You can do it with \filldraw with some arcs. The use of polar coordinatesd like (-70:1) means starting poiunt is at -70 degrees and distance 1 from origin. The cycleat the end of the path closes the draw command.

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \draw (-3,0) -- (3,0);
  \draw (0,-3) -- (0,3);
  \filldraw[fill=gray!30,opacity=0.7] (-70:1) arc (-70:150:1) -- (150:2) arc (150:-70:2) -- cycle;
  \draw[->] (0:0.7) arc (0:-70:0.7)node[pos=0.5,anchor=-35]{$\alpha$};
  \draw[->] (0:0.8) arc (0:150:0.8)node[pos=0.9,anchor=150]{$\beta$};
\end{tikzpicture}
\end{document}

enter image description here

  • That's exactly what I wanted. But I'm not sure if I fully understand what you did there. The (-70:1) is the starting point of the arc in polar coordinates? And adding --cycle in the end closes the graph by drawing the connections between the two arcs? – RedLantern Mar 26 at 10:44
  • Yes, I have added that in the description. – StefanH Mar 26 at 10:52

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.