我在 pgfplots 中创建了一个图形,并在 tikzfigure 环境中添加了一些额外的标签。现在我发现我需要重新缩放整个图形。通常可以通过添加来完成此操作,但此处对和的scale=2
缩放解释不同。结果相当丑陋,我尝试了几种方法但无法修复它。理想情况下,我希望字体大小在两种环境中都完全不变。pgfplots
tikzfigure
以下是 MWE 及其输出:
\documentclass[tikz,12pt]{standalone}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat=1.8}
\usetikzlibrary{plotmarks}
\begin{document}
% figure looks fine with:
% \begin{tikzpicture}[scale=1,font=\footnotesize]
% but fonts scale unevenly with:
\begin{tikzpicture}[scale=1.5,font=\footnotesize]
\begin{axis}[name=main plot,
view={45}{45},
ymax=0.4,
xmax=0.16,
zmax=0.6,
y dir=reverse,
xtick={0}, ytick={1}, ztick={1},
extra z ticks={0.5},
extra z tick labels={0.5\,K},
axis lines=center,
]
\addplot3+[blue,fill=blue!40!white, fill opacity=0.5,domain=0:0.233,no markers,samples y=0,samples=50] ({0},{x},{0.419-1.2466E-5*(x+1.30574)^24.19521}) -- (axis cs:0,0,0) -- cycle;
%/*
\tikzset{endpoint/.style={circle,draw=black,fill,inner sep=0pt,minimum size=3pt} }
\node[endpoint] at (axis cs:0,0.23,0) [label=below:{(1)}] {};
%*/
\end{axis}
\node at (0.8,1.6) {$H\perp c$};
\node at (4.5,5) {28\%};
\end{tikzpicture}
\end{document}
有没有简单的方法可以解决这个问题?
答案1
这是 pgfplots 在 tikzpicture 中对齐数据的方式(不幸的)产物:它使用所谓的“单元格图片”,即包含轴作为图片的节点。该节点被移动以遵守对齐选项。不幸的是,这似乎(transform shape
隐式地)使用了该选项。
解决方法是(a)告诉 pgfplots 缩放其轴(且仅缩放其轴)和(b)告诉 tikz 缩放其余部分(且仅缩放其余部分):
\documentclass[tikz,12pt]{standalone}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat=1.8}
\usetikzlibrary{plotmarks}
\begin{document}
% figure looks fine with:
% \begin{tikzpicture}[scale=1,font=\footnotesize]
% but fonts scale unevenly with:
\begin{tikzpicture}[font=\footnotesize]% ----- CF
\begin{axis}[name=main plot,
scale=1.5, % ----- CF
view={45}{45},
ymax=0.4,
xmax=0.16,
zmax=0.6,
y dir=reverse,
xtick={0}, ytick={1}, ztick={1},
extra z ticks={0.5},
extra z tick labels={0.5\,K},
axis lines=center,
]
\addplot3+[blue,fill=blue!40!white, fill opacity=0.5,domain=0:0.233,no markers,samples y=0,samples=50] ({0},{x},{0.419-1.2466E-5*(x+1.30574)^24.19521}) -- (axis cs:0,0,0) -- cycle;
%/*
\tikzset{endpoint/.style={circle,draw=black,fill,inner sep=0pt,minimum size=3pt} }
\node[endpoint] at (axis cs:0,0.23,0) [label=below:{(1)}] {};
%*/
\end{axis}
\begin{scope}[scale=1.5]% ---- CF
\node at (0.8,1.6) {$H\perp c$};
\node at (4.5,5) {28\%};
\end{scope}% ---- CF
\end{tikzpicture}
\end{document}
\end{document}
毫无疑问,这个解决方案很糟糕。
作为 pgfplots 包的作者,我会考虑改进。