TransWikia.com

Improve Tikz code

TeX - LaTeX Asked on December 13, 2021

I needed to draw a graph on LaTex, I’m quite new to Tikz environment so I used the following code. My question is how to improve my code because I’m sure I can have a better result with fewer lines.
PS : is it possible to add a legend for s1 and z1 ?

documentclass[12pt,a4paper]{report}
usepackage[utf8]{inputenc}
usepackage[margin=1in]{geometry}
usepackage{graphicx}
usepackage{tikz}
usepackage{xcolor}

begin{document}
begin{center}
begin{tikzpicture}[thick, >=stealth]
%axe des x
draw [->] (-2.5,0) -- (1,0);
node at (1.5,0) {small textbf{Re(s)}};
%axe des y
draw [->]  (0,-2.5) -- (0,2.5);
node at (0.5,2.6) {small textbf{Im(s)}};
%demi cerle 
draw (0,1.5) arc (90:270:1.5cm);
%partie réelle omega n
draw [ultra thick] (-1.5,-0.1) -- (-1.5,0.1);
node at (-1.8,-0.2) {small textbf{$omega_n$}};
%moins alpha
draw [ultra thick] (-0.85,-0.1) -- (-0.85,0.1);
node at (-1.2,-0.2) {small textbf{-$alpha$}};
%dots
draw [dotted, thick] (0,-1.25) -- (-0.85,-1.25) -- (-0.85,1.25) -- (0,1.25);
%s1
node at (-0.85,1.25) {tiny textbf{+}}; 
node at (-1.1,1.3) {scriptsize textbf{$s_1$}}; 
%s2
node at (-0.85,-1.25) {tiny textbf{+}}; 
node at (-1.1,-1.3) {scriptsize textbf{$s_2$}}; 
% omega d
draw [very thick] (-0.1,1.25) -- (0.1,1.25);
node at (0.4,1.26) {scriptsize textbf{$omega_d$}};
%-omega d
draw [very thick] (-0.1,-1.25) -- (0.1,-1.25);
node at (0.4,-1.26) {scriptsize textbf{-$omega_d$}};
%segment
draw [thick] (-0.85,1.25) -- (0,0) -- (-0.85,-1.25);
%Phi
draw [ultra thin, ->] (-0.298,0.4) arc (140:90:0.4cm);
node at (-0.2,0.65) {scriptsize $phi$};
%zéro 1
draw (-.7,0.625) circle (0.7mm);
node at (-.7,0.4) {scriptsize $z_1$};
%zéro 2
draw (-.7,-0.625) circle (0.7mm);
node at (-.7,-0.4) {scriptsize $z_2$};
end{tikzpicture}
end{center}
end{document}

enter image description here

One Answer

Maybe you'll like:

documentclass[tikz, margin=3mm]{standalone}
usetikzlibrary{angles, arrows.meta,
                quotes}

begin{document}
    begin{tikzpicture}[
                       > = Stealth,
every node/.append style = {font=small, text=black, fill=white, fill opacity=0.5,
                            text opacity=1, inner sep=1pt},
my angle/.style = {draw, thin, Straight Barb-Straight Barb, 
                   angle radius=7mm, angle eccentricity=1.3,
                   font=small} 
                        ]
% axes x
draw[->] (-2.5,0) -- (1,0.0) node (x) [right] {$mathrm{Re}(s)$};
draw[->] (0,-2.5) -- (0,0) coordinate (O)
                   -- (0,2.5) node (y) [above] {$mathrm{Im}(s)$};
% semicircle
draw[thick, red] (0,1.5) arc (90:270:1.5);
% exis ticks
foreach i [count=x] in {-alpha, omega_n}
draw   (-0.75*x,0.1) -- ++ (0,-0.2) node[below] {$i$};
% dashed line
draw[densely dashed, very thin, blue] 
                           (0,-1.25)     node[right] {$-omega_d$}
                        -- (-0.85,-1.25) node (s2) [label=left:$s_1$] {+}
                        -- (-0.85, 1.25) node (s1) [label=left:{$s_2=s_1^{*}$}] {+}
                        -- (0, 1.25)     node[right] {$omega_d$};
% phasors
draw[thick, <->] (s1.center) -- (O) -- (s2.center);
% phase phi
pic [my angle, "$phi$"] {angle = y--O--s1};
% zéros
draw[semithick]   
        (-.7, 0.625) circle[radius=0.7mm] node[left=2pt] {$z_1$}
        (-.7,-0.625) circle[radius=0.7mm] node[left=2pt] {$z_2$};
    end{tikzpicture}
end{document}

(I focused only to image, so I select standalone document class, however, you can instead it add preamble from your MWE.)

enter image description here

Answered by Zarko on December 13, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP