Tikz decoration.tex 库破坏了我的情节

Tikz decoration.tex 库破坏了我的情节

我有一个这样的情节:

\documentclass[]{standalone}
%\usepackage{tikz}
\usepackage{tikz}
\usepackage{pgfplots}
    \usetikzlibrary{decorations.text}
    \usetikzlibrary{intersections}
\begin{document}

\begin{tikzpicture}{}
\begin{axis}[
axis lines = left,
clip=false,
ylabel={$H$},
xlabel={$T$},
xmin=0, xmax=1,
ymin=0, ymax=1,
ticks=none,
%y=1.7cm,
%x=1cm,
]
\newcommand\ka{0.4} %коефіцієнт нахилу верхнього графіку
\newcommand\kb{0.1} %коефіцієнт нахилу нижнього графіку
\addplot[mark=none,
domain=0:1,
name path=Entalpy1
] {0.5*x + + 0.1*x^2 + \ka}; %верхній графік
\addplot [mark=none,domain=0:1,name path=Entalpy2] {0.5*x + 0.2*x^2 + \kb}; %нижній графік

\coordinate (T1) at (axis cs:0.25,0); % коррдината T1 на осі T
\path[name path=T1] (T1) -- ([yshift=10cm]T1); % вертикаль T1

\coordinate (T2) at (axis cs:0.5,0); % коррдината T2 на осі T
\path[name path=T2] (T2) -- ([yshift=10cm]T2); % вертикаль T2

%\draw (axis cs:-0.025,0.5)--(axis cs:0.025,0.5);
%\draw (axis cs:-0.025,0.25)--(axis cs:0.025,0.25);

\draw[<->] (axis cs:-0.015,\ka)--(axis cs:-0.015,\kb) node [midway, left] {$\Delta_r H$};

\draw[name intersections={of=T1 and Entalpy1, by=P1}] (P1) -- ({P1}|-{axis cs:0,0});
\draw[name intersections={of=T2 and Entalpy2, by=P2}] (P2) -- ({P2}|-{axis cs:0,0});
\draw[dashed] ([xshift=10]P2) -- ([xshift=-10]{P1}|-{P2});

\path[name path=horisontal1] (P1) -- ([xshift=20cm]P1);
\path[name path=horisontal2] (P2) -- ([xshift=20cm]P2);

\newcommand\shifting{15}
\draw [<->] ([xshift=\shifting]{P1}|-{P2}) -- ([xshift=\shifting]P1) node [midway, left] {$Q$};
\draw [dashed, name intersections={of=horisontal1 and Entalpy2, by=Pad}] ([xshift=10]Pad) -- ([xshift=-10]P1);
\draw (Pad) -- ({Pad}|-{axis cs:0,0});

\node[below] at (T1) {$T_1$};
\node[below] at (T2) {$T_2$};
\node[below] at ({Pad}|-{axis cs:0,0}) {$T_{ad}$};
\end{axis}
\end{tikzpicture} 
\end{document}

在此处输入图片描述

但是当我想通过 添加一些文本到图表中时decorations.text,它会破坏图表。例如,如果我尝试将上一个更改\addplot为下一个

\addplot[
postaction={
decorate,
decoration={
text along path,
text={text},
raise=1ex,
text align={center},
}
},
domain=0:1,
name path=Entalpy1
] {0.5*x + + 0.1*x^2 + \ka};

我明白了

在此处输入图片描述

有错误

Package pgf Error: No shape named intersection-1 is known. \end{axis}

答案1

如果顶部曲线上方的文本很短,那么您可以坚持使用其上方节点的简单位置(它与放置点的切线对齐):

\addplot[mark=none, name path=Entalpy1
         ] {0.5*x + 0.1*x^2 + \ka} %верхній графік
         node[pos=0.2,above,sloped] {text}; 

否则,解决方案如下格诺特评论。结合两种解决方案并重新组织代码后,MWE 为:

\documentclass{standalone}
\usepackage{tikz}
    \usetikzlibrary{calc, decorations.text, intersections}
\usepackage{pgfplots}
    \pgfplotsset{compat=1.14}

\begin{document}
    \begin{tikzpicture}[
shorten <>/.style = {shorten <=#1, shorten >=#1},   
                        ]
\begin{axis}[
axis lines = left,
clip=false,
ylabel={$H$},
xlabel={$T$},
x label style={yshift=-5mm},
xmin=0, xmax=1,
ymin=0, ymax=1,
ticks=none,
domain=0:1
            ]
\newcommand\ka{0.4} %коефіцієнт нахилу верхнього графіку
\newcommand\kb{0.1} %коефіцієнт нахилу нижнього графіку
%%%%
\addplot[postaction={decorate,decoration={%
                text along path, text align=center,
                text={text},
                raise=1ex}},
        ] {0.5*x + 0.1*x^2 + \ka};% %верхній графік
\addplot[mark=none, name path=Entalpy1
         ] {0.5*x + 0.1*x^2 + \ka} %верхній графік
         node[pos=0.2,above,sloped] {my suggestion}; 
%%%%
\addplot[mark=none, name path=Entalpy2
         ] {0.5*x + 0.2*x^2 + \kb}; %нижній графік

\coordinate (T1) at (0.25,0);   % коррдината T1 на осі T
\path[name path=T1] (T1) -- ++ (0,2); % вертикаль T1
\coordinate (T2) at (0.50,0);    % коррдината T2 на осі T
\path[name path=T2] (T2) -- ++ (0,2); % вертикаль T2

\draw[<->] (-0.015,\ka) -- node[left] {$\Delta_r H$} (-0.015,\kb) ;

\coordinate (O) at (0,0);
\draw[name intersections={of=T1 and Entalpy1, by=P1}] 
    (P1) -- (P1 |- O) node[below] {$T_1$};
\draw[name intersections={of=T2 and Entalpy2, by=P2}] 
    (P2) -- (P2 |- O) node[below] at (T2) {$T_2$};
\path[name path=horisontal1] (P1) -- ++ (0.5,0); %
\draw[dashed,shorten <>=-2mm,
      name intersections={of=horisontal1 and Entalpy2, by=Pad}] (P1) -- (Pad);
\draw[dashed,shorten <>=-2mm,name path=horisontal2] (P2) -- (P1 |- P2);

\draw [<->] ($(P1 -| P2)!0.5!(P1)$) -- node [left] {$Q$} ($(P1 |- P2)!0.5!(P2)$);
\draw (Pad) -- (Pad |- O) node[below] {$T_{ad}$};;
\end{axis}
    \end{tikzpicture}
\end{document}

我的建议有文字我的建议,garnot 有文字文本

在此处输入图片描述

相关内容