在虚轴刻度标记中自动设置虚数单位

在虚轴刻度标记中自动设置虚数单位

我已经看到了类似的解决方案这个(在问题部分),但它们不使用环境axis中的子环境tikzpicture

如果我制作一个 2-D 图,则根据设置方式显示刻度、刻度标记和刻度间距,但只显示“实数”数字(如果要设置刻度标记,使所有刻度标记中都有 π)。我不介意这样做,因为 π 是一个实数常数。

对于虚数单位(或者在工程界),我希望它能够出现自动地在虚轴上的刻度值。

以下是出于功能目的的 MWE:

\documentclass[12pt]{article}
\usepackage{pgfplots}
\usepackage{float}
\pgfplotsset{compat=1.17}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows.meta, automata, positioning, matrix, calc}
\usepackage[RPvoltages, american,siunitx]{circuitikz}
\usepackage[margin=1in]{geometry} 
\tikzset{block/.style={draw, rectangle, 
        minimum height=3em, minimum width=3em},
    sum/.style={draw, circle, node distance=1cm},
    input/.style={coordinate},
    output/.style={coordinate},
    pinstyle/.style={pin edge={to-,thin,black}}}
\begin{document}    
    \begin{figure}[H]\centering
        \begin{tikzpicture}
            \begin{axis}[
                xmin=-20,xmax=5,
                ymin=-5,ymax=5,
%               ytick={-10, -5, 5, 10}, %when axis equal is set
%               yticklabels={$-j10$, $-j5$,  $j5$, $j10$},
                ytick={-4, -2, 2, 4}, %when axis equal is not set
                yticklabels={$-j4$, $-j2$,  $j2$, $j4$},
                axis lines=center,
                axis line style=->, xlabel = {$\sigma$}, ylabel={$j\omega$},
                %axis equal,
                every axis y label/.style={at={(ticklabel* cs:1.05)},anchor=south},
                every axis x label/.style={at={(ticklabel* cs:1.05)},anchor=west},
                legend cell align={left},
                legend pos=outer north east]
            \end{axis}
        \end{tikzpicture}
    \end{figure}
\end{document}

输出(axis equal未设置):

在此处输入图片描述

axis有没有办法在子环境中进行设置,tikzpicture使得当垂直刻度由于设置更改而自动调整时,将要自动地出现在数字的左边(如果数字为负数,则出现在减号的右边),还是出现在数字的右边?

答案1

\documentclass[border=1 cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}    
\begin{tikzpicture}
\begin{axis}[
xmin=-20, xmax=5,
ymin=-5, ymax=5,
axis lines=center,
xlabel = {$\sigma$}, ylabel={$j\omega$},
every axis y label/.style={at={(ticklabel* cs:1.05)},anchor=south},
every axis x label/.style={at={(ticklabel* cs:1.05)},anchor=west},
yticklabel={$\pgfmathparse{\tick > 0 ? "j" : "-j"} \pgfmathresult \pgfmathparse{abs(\tick)} {\pgfmathprintnumber{\pgfmathresult}}$},
%yticklabel={$\pgfmathprintnumber{\tick} j$}, %This is for j to appear on the right side of the number instead of the left
]
\end{axis}
\end{tikzpicture}
\end{document}

带有自定义 y 刻度的图表

相关内容