在轴环境内绘制圆圈

在轴环境内绘制圆圈

我正在尝试绘制一个上半连续函数,并且我想在顶线处画一个实心圆,在底线处画一个空心圆。

这是我的 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} 

相关内容