我有一个这样的情节:
\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 有文字文本。