TikZ:不同的 x,y 比例,但形状保持其原有的样子

TikZ:不同的 x,y 比例,但形状保持其原有的样子

我有一些旧的 pstricks 代码,正在用 TikZ 重新制作。在我当前的图片中,x 和 y 比例不同:

\begin{tikzpicture}[xscale=1.8,yscale=4]

但是,这样做的问题是,圆被画成了椭圆,在 y 方向上被拉伸得更多。我也试过

\begin{tikzpicture}[x=1.8cm,y=4cm]

但这与将圆形拉伸成椭圆形的效果是一样的。

那么,有没有办法只在 TikZ 中缩放坐标,而不影响物体形状?

答案1

我发现了如下解决方案

\draw (1,1) circle(0.1cm);

完成工作。我一直在使用

\draw (1,1) circle(0.1);

它会拾取单独的缩放比例。

答案2

PSTricks\psrunit在绘图时使用\pscircle

在此处输入图片描述

\documentclass[tikz,border=12pt]{standalone}

\newlength\runit
\runit=1cm

\edef\Radius#1{#1\runit}

\begin{document}
\begin{tikzpicture}[x=3cm,y=2cm]
    \draw[fill=red] (0,0) circle (\Radius{2});
    \draw (-2,-2) rectangle (2,2);
\end{tikzpicture}
\end{document}

注意:全局声明径向单位给您带来一个优势,您可以在一个地方更改所有圆半径的单位。


我们还可以声明一个新键,以便更容易地访问这个径向单元。

\documentclass[tikz,border=12pt]{standalone}

\makeatletter
\newlength\tikz@runit
\tikzset{
    r/.code=\pgfmathsetlength\tikz@runit{#1},
    r=+1cm, % setting a default value
    r radius/.style={radius={(#1)*\tikz@runit}},
    xr radius/.style={x radius={(#1)*\tikz@runit}},
    yr radius/.style={y radius={(#1)*\tikz@runit}}
}
\makeatother

\begin{document}
\begin{tikzpicture}[x=3cm,y=2cm]
    \fill[fill=red] (0,0) circle [r radius=1+1];
    \fill[fill=green] (-1,1) circle [xr radius=1+3/4, yr radius=1-1/3]
                      (1,1)  circle [xr radius=1+3/4, yr radius=1-1/3];
    \draw (-2,-2) rectangle (2,2);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

所有提出的解决方案的关键思想都依赖于改变单位x=y=。这种方法效果很好。

但是在我的代码中,最好坚持使用xscale=yscale=。因此我设置了一个非常简单的宏:

\newcommand{\pnt}[3][black]{%
\begin{scope}[shift={#2}];
\fill[color=#1,shift only] (0,0) circle(#3);
\end{scope}}

与以下项一起使用:

\pnt[red]{(3,4)}{0.06}

放置位置 (3,4) 处半径为 1.5pt 的红点。

相关内容