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=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 的紅點。

相關內容