我有一些舊的 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=
and 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 的紅點。