為什麼我的每個 label/.style 不顯示微小節點?

為什麼我的每個 label/.style 不顯示微小節點?

我不知道我犯了什麼錯誤,但我無法設定\tiny標籤節點的全域字體大小。我試過every label/.style={font=\tiny}。它似乎適用於軸標籤,但不適用於標籤節點。我的MWE:

\documentclass[12pt]{article}
\usepackage[dvips]{graphicx,color}
\usepackage{wasysym}

\usepackage{pgfplots}
\usepackage{tikz}
\usepackage{xcolor}

\usetikzlibrary{arrows,plotmarks}
\usetikzlibrary{intersections,positioning}

\begin{document}
\pgfplotsset{
  standard/.style={%Axis format configuration
    axis x line=middle,
    axis y line=middle,
    enlarge x limits=0.15,
    enlarge y limits=0.15,
    every label/.style={font=\tiny},
    every axis x label/.style={at={(current axis.right of origin)},anchor=north west},
    every axis y label/.style={at={(current axis.above origin)},anchor=north east},
   every axis plot post/.style={mark options={fill=black}}
    }
 }
\begin{figure}[h!]
\begin{center}
\begin{tikzpicture}[baseline=(current bounding box.center)]
    \begin{axis}[axis lines=middle, xtick={-1,0,1},
      xticklabels={-1, 0, 1},
      extra x tick style={
      xticklabel style={yshift=0.5ex, anchor=south}},
      xmin=-4,xmax=4, ytick={\empty}, yticklabels={}, 
      ymin=-2, ymax=2, axis on top,
      enlarge y limits=0.35,
      width=6cm,
      xlabel={$n$}, x label style={anchor=north},
      ylabel={$x[n]$}, y label style={anchor=west}]
      \addplot+[ycomb,black,thick] plot coordinates
      {(-1,1) (0,2) (1,1)};
      \node[anchor=south west] at (axis cs:0,2) {$2$};
      \node[anchor=south east] at (axis cs:-1,1) {$1$};
      \node[anchor=south west] at (axis cs:1,1) {$1$};
      \end{axis}
      \end{tikzpicture}%
      \hspace*{3mm} {\Huge\pointer} \hspace*{3mm}%
      \begin{tikzpicture}[baseline=(current bounding box.center)]
      \pgfplotsset{every tick label/.append style={font=\tiny},
        every label/.append style={font=\tiny}}
      \begin{axis}[axis lines=middle, xtick={-3,-2,...,3},
        xticklabels={{}, {}, {}, 0, 1, 2, 3},
        extra x ticks={-2,-1},
        extra x tick labels={$-3$,$-2$,$-1$},
        extra x tick style={
          xticklabel style={yshift=0.5ex, anchor=south}},
        xmin=-4,xmax=4, ytick={\empty}, yticklabels={}, 
        ymin=-2, ymax=2, axis on top,
        enlarge y limits=0.35,
        width=6cm,
        xlabel={$n$}, x label style={anchor=north},
        ylabel={$y[n]$}, y label style={anchor=west}]
        \addplot+[ycomb,black,thick] plot coordinates
        {(-3,0) (-2,-1) (-1,-2) (0,0) (1,2) (2,1) (3,0)};
        \node[anchor=north] at (axis cs:-2,-1) {$-1$};
        \node[anchor=north] at (axis cs:-1,-2) {$-2$};
        \node[anchor=west] at (axis cs:1,2) {$2$};
        \node[anchor=west] at (axis cs:2,1) {$1$};
      \end{axis}
    \end{tikzpicture}%
  \end{center}
\end{figure}
\end{document}

在此輸入影像描述

答案1

造成這種情況的原因有很多,但最主要的原因是你沒有TikZ 意義上的任何「標籤節點」。標籤節點是應用於節點本身的節點,例如\node [label=above:I am a label node] {I am the main node};.您使用的節點只是“常規”節點。

說你可以想到然後說明例如every node/.append style={font=\tiny,green}(在\tikzset),但因為一切包含一些文字的節點是一個節點,這比您想要的要多得多。嘗試一下,看看會發生什麼。

我允許自己稍微修改一下你的 MWE 並重新訂購一些東西。然後我評論了所有“有點奇怪”/“不直接”的內容,以防萬一您還想學習除了“小節點”問題之外的其他東西。

如果您只對「小節點內容」感興趣,請搜尋虛線包圍的區塊。

更多細節請查看程式碼中的註解。

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
% -----------------------------------------------------------------------------
% one possibility to show tiny labels is to define a new style which you
% apply later to the corresponding nodes
\tikzset{
    Label/.style={
        font=\tiny,
        red,
    },
}
% -----------------------------------------------------------------------------
%\pgfplotsset{
%    % this (whole) style isn't *used* in the following tikzpictures/axis
%    % environments so it isn't needed here
%    standard/.style={%Axis format configuration
%        axis x line=middle,
%        axis y line=middle,
%        enlarge x limits=0.15,
%        enlarge y limits=0.15,
%        every label/.style={font=\tiny},
%        every axis x label/.style={
%            at={(current axis.right of origin)},
%            anchor=north west,
%        },
%        every axis y label/.style={
%            at={(current axis.above origin)},
%            anchor=north east,
%        },
%        every axis plot post/.style={
%            mark options={fill=black},
%        },
%    },
%}
\begin{document}
\begin{tikzpicture}[
%    % in this case this statement is not needed
%    baseline=(current bounding box.center),
]
    \begin{axis}[
        axis lines=middle,
        xtick={-1,0,1},
%        % you don't need this, because the tick labels are identical to the ticks
%        xticklabels={-1, 0, 1},
%        % there are no `extra x ticks` so you don't need this as well
%        extra x tick style={
%            xticklabel style={yshift=0.5ex, anchor=south},
%        },
        xmin=-4,
        xmax=4,
        ytick={\empty},
%        % since you don't state `ytick's you don't to provide corresponding labels ...
%        yticklabels={},
        ymin=-2, ymax=2,
        axis on top,
        enlarge y limits=0.35,
        width=6cm,
        xlabel={$n$},
        ylabel={$x[n]$},
        x label style={anchor=north},
        y label style={anchor=west},
    ]
        \addplot+ [ycomb,black,thick] coordinates {
            (-1,1) (0,2) (1,1)
        };
        \node [anchor=south west] at (axis cs:0,2)  {$2$};
        % ---------------------------------------------------------------------
        % as stated earlier there are plenty of ways to achieve what you want
        % to do, here are some possibilities
        %
        % 1. provide what you need directly to the node
        \node [
            anchor=south east,
            font=\tiny,
            red,
        ] at (axis cs:-1,1) {$1$};
        % 2. apply the created style directly to the node
        \node [
            anchor=south west,
            Label,
        ] at (axis cs:1,1)  {$1$};
    \end{axis}
\end{tikzpicture}

\begin{tikzpicture}[
%    baseline=(current bounding box.center),
]
        \pgfplotsset{
            every tick label/.append style={font=\tiny},
%            % this style is a TikZ style for "labels of nodes" and not nodes that are labels,
%            % that is why you don't see any changing font sizes
%            % said that, it is also not needed here
%            every label/.append style={font=\tiny},
        }
    \begin{axis}[
        axis lines=middle,
        xtick={-3,-2,...,3},
        % as you can see the zero isn't shown, although you stated it here
        % this is because of the key `hide obscured x ticks' which is true by default when
        % `axis lines' are set to `middle' or the alias `center'
        xticklabels={{}, {}, {}, 0, 1, 2, 3},
        % also this is strange. You state the ticks at positions -2 and -1, ...
        extra x ticks={-2,-1},
        % ... but apply the numbers -3 and -2 to them. Is that intended?
        extra x tick labels={$-3$,$-2$,$-1$},
        extra x tick style={
            xticklabel style={yshift=0.5ex,anchor=south}, },
        xmin=-4, xmax=4,
        ytick={\empty},
        yticklabels={},
        ymin=-2, ymax=2,
        axis on top,
        enlarge y limits=0.35,
        width=6cm,
        xlabel={$n$},
        ylabel={$y[n]$},
        x label style={anchor=north},
        y label style={anchor=west},
    ]
        \addplot+ [ycomb,black,thick] plot coordinates
            {(-3,0) (-2,-1) (-1,-2) (0,0) (1,2) (2,1) (3,0)
        };
        % ---------------------------------------------------------------------
        % 3. but you could also scope the nodes and apply the style of the
        %    nodes
        \begin{scope}[
            font=\tiny,
            red,
        ]
            \node [anchor=north] at (axis cs:-2,-1) {$-1$};
            \node [anchor=north] at (axis cs:-1,-2) {$-2$};
        \end{scope}
        % 3. or of course apply the style in the scope
        \begin{scope}[
            Label,
        ]
            \node [anchor=west]  at (axis cs:1,2)   {$2$};
            \node [anchor=west]  at (axis cs:2,1)   {$1$};
        \end{scope}
        % ---------------------------------------------------------------------
    \end{axis}
\end{tikzpicture}
\end{document}

顯示上述程式碼結果的圖像

相關內容