我正在尝试绘制一个上半连续函数,并且我想在顶线处画一个实心圆,在底线处画一个空心圆。
这是我的 MWE:
\documentclass[border=0.5]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{pgfplots}[compact=1.11]
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[domain=-2:2, samples = 100, color = blue!80!black] {x^2};
\addplot[domain=2:6, samples = 100, color = blue!80!black] {-x^2+8*x-12};
\filldraw[fill=blue!80!black,draw=blue!80!black] (2,4) circle(0.5);
\filldraw[draw=blue!80!black,fill=white] (2,0) circle(0.5);
\end{axis}
\filldraw[fill=blue!80!black,draw=blue!80!black] (2,4) circle(0.5);
\filldraw[draw=blue!80!black,fill=white] (2,0) circle(0.5);
\end{tikzpicture}
\end{document}
两个小圆圈的位置和大小都错误,大圆圈的位置也错误。
有没有办法做到这一点?
答案1
我最终在轴环境中定义了坐标,然后在外面绘制了东西。
\documentclass[border=0.5]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{pgfplots}%[compact=1.11]
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[domain=-2:2, samples = 100, color = blue!80!black] {x^2};
\addplot[domain=2:6, samples = 100, color = blue!80!black] {-x^2+8*x-12};
\coordinate (center1) at (axis cs:2,4);
\coordinate (center2) at (axis cs:2,0);
\end{axis}
\filldraw[fill=blue!80!black,draw=blue!80!black] (center1) circle(0.5);
\filldraw[draw=blue!80!black,fill=white] (center2) circle(0.5);
\end{tikzpicture}
\end{document}
尺寸需要调整,但我不知道你想要哪个尺寸,你只写了0.5
。
编辑:以下是我决定这样做的原因。在更复杂的场景中,如果在轴环境中绘制圆,圆可能不再是圆。例如,在 3D 图中就会发生这种情况,例如这个帖子:如果将鸭子画在轴内,这将导致一些事情让人担心这只可怜的鸭子的安全。当然,可能存在这样的情况,人们希望有这些变形,或者在某些情况下(如这里),无论将东西画在里面还是外面都无关紧要。
答案2
再举一个例子......简单,简洁且可调整:-)
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\begin{axis}[samples=100]
\addplot[color=blue!80!black, domain=-2:2,
-{Circle[length=7mm, fill=blue]}] {x^2};
\addplot[color=blue!80!black, domain= 2:6,
{Circle[length=7mm, fill=white]}-] {-x^2+8*x-12};
\end{axis}
\end{tikzpicture}
\end{document}
答案3
这是我认为您要尝试做的一个稍微简单的方法。我希望其他比我更精通 PGFPlots 的人可以展示一些更简单的东西。
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[color=blue!80!black, domain=-2:2, samples=100] {x^2};
\addplot[color=blue!80!black, domain= 2:6, samples=100] {-x^2+8*x-12};
\addplot[color=blue!80!black, only marks, style={mark=*, fill=blue!80!black}] coordinates {(2,4)};
\addplot[color=blue!80!black, only marks, style={mark=*, fill=white}] coordinates {(2,0)};
\end{axis}
\end{tikzpicture}
\end{document}