Не могу понять, какую ошибку я совершаю, но я не могу установить глобальный размер шрифта, скажем, \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}