我不知道我犯了什麼錯誤,但我無法設定\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}