![代码](https://linux22.com/image/353958/%E4%BB%A3%E7%A0%81.png)
以下代码显示极坐标方程的图形r(\theta) = 4 - 2*sin(\theta)
。我已将此曲线所围成的区域涂上阴影。我只希望对以该曲线和以 0 为中心、半径为 3 的圆所围成的区域涂上阴影。
极轴半径为 7。我没有指定这个。默认值是否比图形的最大半径大一?如何让极轴半径为 8?
我没有指定绘图的尺寸。它比我想要的要大。如何让它达到当前显示尺寸的三分之二?可以通过指定高度和宽度的厘米数或英寸数来指定尺寸吗?
为什么会有一个小的黑色圆弧 - 可能在 -5 度到 5 度之间,半径略大于 4?
\documentclass{amsart}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}[
clip=false, major grid style={black}, minor x tick num=3, % 3 minor x ticks between majors
minor y tick num=2, % 2 minor y ticks between majors
grid=both,
xtick={0,45,...,315},
xticklabels={, $\frac{\pi}{4}$, , $\frac{3\pi}{4}$, , $\frac{5\pi}{4}$, , $\frac{7\pi}{4}$},
ytick={0,3,6},
yticklabels={\empty}
]
\addplot[samples=360, mark=none, fill=red!70!black, opacity=0.5, domain=0:360] {4 - 2*sin(\x)};
\addplot[samples=360, mark=none, thick, red!70!black, domain=0:360] {4 - 2*sin(\x)};
\addplot[samples=360, draw=red, thick, mark=none, domain=0:360] {3};
\addplot[black] {4.05};
\end{polaraxis}
\end{tikzpicture}
\end{document}
答案1
小问题太多了。如果这个答案中有任何不清楚的地方请告诉我。
我只想要对这条曲线所围成的区域和以 0 为中心、半径为 3 的圆进行着色。
请参阅最后的代码。本质上,你可以\clip
绘制一个新函数min(4-2*sin(\x),3)
默认值是否比图的最大半径大一?
没有人真正知道。轴极限的确定是 pgfplots 的一个长期谜团。
如何使极轴半径为 8?
@Bobyandbob 在评论中回答。(这也许是控制轴限制最不糟糕的方法。)
是否可以通过指定高度和宽度的厘米数或英寸数来指定尺寸?
使用\begin{polaraxis}[width=5cm]
或您想要的任何值。
为什么会有一个小的黑色圆弧 - 可能在 -5 度到 5 度之间,半径略大于 4?
因为\addplot[black] {4.05};
在你的 MWE 中。回想一下,默认domain
是-4:4
在 Ti钾Z。
我怎样才能绘制 x 轴和 y 轴?
严格来说,polaraxis
只有 r 轴和 θ 轴。要绘制通常的 x 轴,请使用\draw[->]
。(参见下面的代码。)x 轴上的标签可以通过类似以下方式绘制\draw foreach\x in{-10,...,10}{(0,\x)node[lower right]{x}};
我想要两个半径分别为 8 和 8.05 的同心圆来表示显示的“极平面”的范围。半径为 8 的圆是用次要 x 刻度数 = 2 绘制的。如何绘制半径为 8.05 或 8.1 的圆,并使用相同的灰度?
这可以通过 Ti 来实现钾Z 的。您可以通过和 来double
控制它。(参见下面的代码。)line width
double distance
代码
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}[
width=5cm,
clip=false,
x axis line style={double=lightgray,double distance=1pt},
grid=both,
major grid style=black,
minor x tick num=3, % 3 minor x ticks between majors
minor y tick num=2, % 2 minor y ticks between majors
xtick={0,45,...,315},
xticklabels={,$\frac{\pi}4$,,$\frac{3\pi}4$,,$\frac{5\pi}4$,,$\frac{7\pi}4$},
%y tick style={draw=none},
yticklabel=\empty,
domain=0:360,
samples=360,
mark=none
]
\addplot[draw=red,thick]{3};
\addplot[thick,fill=none,draw=red!70!black]{4-2*sin(\x)};
\addplot[thick,fill=red!70!black,draw=none,opacity=0.5]{min(4-2*sin(\x),3)};
\draw[->](0,-10)--(0,10);
\draw[->](90,-10)--(90,10);
\end{polaraxis}
\end{tikzpicture}
\end{document}
答案2
在等待pgfplots
支持时,可以使用以下替代方法元帖子包裹在luamplib
。你必须亲自绘制所有内容,但你可以让它看起来完全符合你的要求。
\documentclass{amsart}
\usepackage{luamplib}
\mplibtextextlabel{enable}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\[
\begin{mplibcode}
beginfig(1);
% set a unit so that 16u is 2/3 of the text width
numeric u;
16u = 2/3 \mpdim\textwidth;
% define some paths
path curve, circle, common;
curve = (for t=0 upto 359: (4-2*sind(t)) * dir t -- endfor cycle) scaled u;
circle = fullcircle rotated 90 scaled 6u;
common = buildcycle(curve, circle);
% fill the common area first
fill common withcolor 7/8[3/4 red,white];
% now make the grey parts of the polar grid
drawoptions(withpen pencircle scaled 1/4 withcolor 3/4 white);
for t=0 step 45/4 until 359:
draw ((4,0) -- (8u,0)) rotated t;
endfor
for r=1 upto 7:
draw fullcircle scaled (2r*u);
endfor
% and the black parts of the polar grid
drawoptions(withpen pencircle scaled 1/4);
for t=0 step 45 until 179:
draw (left--right) scaled 8.2u rotated t;
endfor
% including a double circle on the outside
draw fullcircle scaled 16u;
draw fullcircle scaled (16u+2);
% grid labels
drawoptions();
label("$\frac{ \pi}4$", (9u,0) rotated 45);
label("$\frac{3\pi}4$", (9u,0) rotated (3*45));
label("$\frac{5\pi}4$", (9u,0) rotated (5*45));
label("$\frac{7\pi}4$", (9u,0) rotated (7*45));
% finally draw the curve and the marker circle
draw curve withcolor 2/3 red;
draw circle withcolor 2/3 blue;
endfig;
\end{mplibcode}
\]
\lipsum[2]
\end{document}
笔记
您
luamplib
可以访问 LaTeX 变量,例如\textwidth
使用\mpdim
从@egreg 的gmp
包借用的功能。我把图形放在数学显示中
\[ ... \]
只是为了让它在页面上居中,并在前后进行适当的跳跃。纯粹主义者可能更喜欢使用环境center
。您将看到我已使用它
buildcycle
来定义common
要填充的区域。这是一个非常通用的宏,用于定义此类路径,但当您将其用于两个封闭路径时,您必须确保每个路径的起点不在另一个路径内。这就是我将路径旋转circle
90 度的原因。