
Der folgende Code zeigt die Grafik der Polargleichung r(\theta) = 4 - 2*sin(\theta)
. Ich habe den Bereich, der durch diese Kurve begrenzt wird, schattiert. Ich möchte, dass nur der Bereich, der durch diese Kurve und den Kreis mit Mittelpunkt 0 und Radius 3 begrenzt wird, schattiert wird.
Der Radius der Polarachse beträgt 7. Das habe ich nicht angegeben. Ist der Standardwert um eins größer als der maximale Radius des Diagramms? Wie bekomme ich den Radius der Polarachse auf 8?
Ich habe die Abmessungen des Diagramms nicht angegeben. Es ist größer, als ich möchte. Wie kann ich es auf zwei Drittel der aktuellen Anzeigegröße bringen? Können die Abmessungen durch Angabe der Anzahl Zentimeter oder Zoll für Höhe und Breite angegeben werden?
Warum wird dort ein kleiner schwarzer Bogen – vielleicht zwischen –5 Grad und 5 Grad – mit einem Radius von etwas mehr als 4 gezeichnet?
\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}
Antwort1
Es gibt so viele kleinere Fragen. Sagen Sie mir, wenn ein Teil dieser Antwort unklar ist.
Ich möchte, dass nur der Bereich schattiert wird, der durch diese Kurve und den Kreis mit Mittelpunkt 0 und Radius 3 begrenzt wird.
Siehe den Code am Ende. Im Wesentlichen können Sie entweder \clip
eine neue Funktion zeichnen odermin(4-2*sin(\x),3)
Ist der Standardwert um eins größer als der maximale Radius des Graphen?
Niemand weiß es wirklich. Die Bestimmung der Achsengrenze ist seit langem ein Rätsel von pgfplots.
Wie erreiche ich, dass der Radius der Polarachse 8 beträgt?
Beantwortet von @Bobyandbob im Kommentar. (Dies ist vielleicht die am wenigsten erbärmliche Art, die Achsenbegrenzung zu steuern.)
Können die Maße durch Angabe der Zentimeter- oder Zoll-Anzahl für Höhe und Breite präzisiert werden?
Verwenden Sie \begin{polaraxis}[width=5cm]
den gewünschten Wert.
Warum wird dort ein kleiner schwarzer Bogen – vielleicht zwischen –5 Grad und 5 Grad – mit einem Radius von etwas mehr als 4 gezeichnet?
Denn \addplot[black] {4.05};
in Ihrem MWE. Denken Sie daran, dass der Standardwert in Ti domain
ist-4:4
kZ.
Wie kann ich die x-Achse und die y-Achse zeichnen?
Streng genommen polaraxis
gibt es in nur eine r-Achse und eine θ-Achse. Um die normale x-Achse zu zeichnen, verwenden Sie \draw[->]
. (Siehe den Code unten.) Die Beschriftungen auf der x-Achse können mit etwas wie gezeichnet werden\draw foreach\x in{-10,...,10}{(0,\x)node[lower right]{x}};
Ich wollte zwei konzentrische Kreise mit den Radien 8 und 8,05, um die Ausdehnung der angezeigten „Polarebene“ anzuzeigen. Der Kreis mit dem Radius 8 wird mit dem kleinen x-Tick num=2 gezeichnet. Wie kann ich einen Kreis mit dem Radius 8,05 oder 8,1 mit demselben Grauton zeichnen?
Dies kann durch Ti erfolgenkZ's . Sie können es mit und double
steuern . (Siehe den Code unten.)line width
double distance
Code
\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}
Antwort2
Während Sie auf Unterstützung warten pgfplots
, hier eine Alternative mitMetaposteingewickelt inluamplib
. Sie müssen alles selbst zeichnen, aber Sie können es genau so gestalten, wie Sie möchten.
\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}
Anmerkungen
Mit
luamplib
können Sie auf LaTeX-Variablen zugreifen, beispielsweise\textwidth
mithilfe der\mpdim
Funktion, die aus dem Paket von @egreg übernommen wurdegmp
.Ich habe die Grafik in eine mathematische Anzeige eingefügt,
\[ ... \]
um sie einfach auf der Seite zu zentrieren und einen schönen Abstand davor und danach zu schaffen. Puristen bevorzugen vielleicht die Verwendung einercenter
Umgebung.Sie werden sehen, dass ich verwendet habe,
buildcycle
um dencommon
auszufüllenden Bereich zu definieren. Dies ist ein ziemlich allgemeines Makro zum Definieren von Pfaden wie diesem, aber wenn Sie es mit zwei geschlossenen Pfaden verwenden, müssen Sie sicherstellen, dass der Startpunkt jedes Pfades nicht innerhalb des anderen liegt. Deshalb habe ich dencircle
Pfad um 90 gedreht.