您认为 TikZ 是实现此目的的最佳方法吗?
您还能想到其他什么方法吗?
答案1
如果您不想对小图片进行那么多的控制和精度,您可以使用以下解决方案。
它用
TikZ 图片由两条轴路径和一条绘图路径组成。
图片的常用坐标系缩小了 10 倍。我采用了一种相当不寻常的轴坐标方式,只使用了因子1
(基本单位)的坐标。实际X和是值是通过x
和y
因子计算的。
这样,轴就不会随图或整个 TikZ 图片缩放,但毕竟domain
也会影响图。这里可以介绍一种特殊样式,它根据域设置所有其他设置。我使用了两个具有边界值的示例,以便是轴必须延长,或者整个图片必须缩小,这可能不是一个真正的用例,因为这会扭曲与其他图片的任何关系。
请注意,samples
值过高会大大减慢处理速度。建议将计算外部化(gnuplot
)和/或使用external
TikZ 库。您也可以预先计算一些值(table
然后您需要一个图)并简单地更改坐标系和/或缩放生成的图片。
代码
\documentclass{article}
\usepackage{amstext}
\usepackage{blkarray}
\usepackage{tikz}
\tikzset{
declare function={NormDist(\xValue,\meanValue,\standardDeviation)=1/(\standardDeviation*sqrt(2*pi))*exp(-((\xValue-\meanValue)^2)/(2*\standardDeviation^2));},
}
\newcommand*{\tikzNormDist}[3][]{%
\begin{tikzpicture}[every mini plot picture/.try,#1]
\path[every mini plot x axis/.try] (-1,0) -- (1,0);
\path[every mini plot y axis/.try] (0,0) -- (0,1) [mini plot y axis arrow/.try];
\draw[every mini plot plot/.try] plot[variable=\x] (\x,{NormDist(\x,#2,#3)});
\end{tikzpicture}
}
\tikzset{
every mini plot picture/.style={x=+1mm, y=+1mm, baseline=.5},
every mini plot x axis/.style={draw,thin,x=+2mm},
every mini plot y axis/.style={draw,thin,y=+2.2mm},
every mini plot plot/.style={
thick,
red,
smooth,
samples=40,
domain=-2:2,
},
mini plot y axis arrow/.style={
insert path={
[line cap=round, line join=round]+(+.25mm,+-.5mm) -- +(+0,+0) -- +(+-.25mm,+-.5mm)
}
}
}
\begin{document}
\[
\begin{blockarray}{l c*2{@{\hphantom{{}+{}}}c}}
& \text{Table} & \text{Bed} & \text{Pat} \\
\begin{block}{l(*2{c@{{}+{}}}c)}
\text{Table} & \tikzNormDist{0}{0.3} & \tikzNormDist[
every mini plot plot/.append style={blue!50!red,fill=blue!50!green},
every mini plot y axis/.append style={y=+3.5mm}
]{-.3}{0.15} & \tikzNormDist{-.2}{0.4} \\
\text{Bed} & \tikzNormDist{.2}{0.5} & \tikzNormDist{.7} {0.7} & \tikzNormDist{-.5}{0.7} \\
\text{Pat} & \tikzNormDist{-.1}{0.4} & \tikzNormDist{-.1}{1} & \tikzNormDist[
every mini plot plot/.append style={domain=-10:10,x=+.25mm,y=+5mm}
]{0}{2} \\
\end{block}
& {} = 1 & {} = 1 & {} = 1 \\
\end{blockarray}
\]
\end{document}
输出
答案2
由于我对乳胶没有太多经验,但我知道tikz
我会使用它。如果你碰巧熟悉,R
你可以将两者结合起来(例如http://www.texample.net/tikz/examples/tikzdevice-demo/)。
关于正态分布,你可以用 tikz 做的另一个例子是:http://www.texample.net/tikz/examples/animated-distributions/。
我不太理解你画的矩阵。当使用矩阵节点来组织多个子图时,你可能必须将子图包装在矩阵中,如下所示:({\tikz{....}}
参见https://tex.stackexchange.com/a/119306/19326)。
您可以考虑使用图片来表示正态分布,并使用 tikz 叠加模式。半替代方法是pgf图(这也是基于 tikz,但为什么要学习新工具),另一个是 pstricks。