我有一些旧的 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 的红点。