我不知道自己犯了什么错误,但我无法设置全局字体大小,比如\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}