4

我正在编辑一本教科书,其中有许多使用pgfplot编写的图像(大约700幅)。当要绘制的函数有平方根时(或者如果域是一个闭合区间,则通常如此),我遇到了域问题。

下面是一个示例:函数f(x)=x^2\sqrt{4-x^2}具有域[-2,2]。我希望图中包含位于(-2,0)和(2,0)处的x截距。但图的端点是在x轴附近绘制的。

我尝试增加采样点的数量,或使用样品位于,但结果是一样的。我如何将图形推得更远一点,使其到达轴?我选择了一个具有整数端点的示例,但如果端点是非理性的,问题会更严重。

代码:

\文档类[12pt,信纸]{文章}\使用包{pgfplots}\usetikzlibrary{arrows,arrows.meta}\pgfplotsset{compat=1.18}\开始{文档}\开始{居中}\开始{tikzpicture}\开始{轴}[轴x线=中间,轴y线=中间,xlabel={$x$},ylabel={$y$},ymin=-.9,ymax=3.5,%xmin=-3.5,xmax=3.5,%]\addplot[蓝色,厚,{圆形}-{Circle},domain=-2:2,samples=100]{x^2*sqrt(4-x^2)};\结束{轴}\结束{tikzpicture}\结束{中心}\结束{文档}

结果:y=x^2*sqrt(4-x^2)的绘图

6
  • 嗯……现在无法检查,但如果你移除箭头会发生什么? 5月15日20:44
  • 1
    这很有帮助!如果我更换{圆形}-{圆形}具有-并使用\绘制命令,没有可见的间隙。 5月15日21:05
  • 只会样本=101工作?我不确定这里的样品数量是最好的。。。但您希望将这两个圆放置在x个轴,对吗?然后,分别绘制它们可能是一种方法。 5月15日21:08
  • 额外的采样点改善了左端点。但我想问题是,箭头库提供的点的边缘位于所需的点,而不是中心。 5月15日21:11
  • 是的,您可以使用缩短<=-2.4pt,缩短>=-2.4pt。默认情况下,当您将线宽设置为厚的这意味着0.8pt,这导致2.4pt。 5月15日21:15

2个答案2

重置为默认值
4

将圆圈分开放置或作为标记可能是一个更好的主意,但您可以执行以下操作:

\documentclass[border=10pt]{独立}\使用包{pgfplots}\usetikzlibrary{arrows.meta}\pgfplotsset{compat=1.18}\开始{文档}\开始{tikzpicture}\开始{轴}[轴x线=中间,轴y线=中间,xlabel={$x$},ylabel={$y$},ymin=-.9,ymax=3.5,xmin=-3.5,xmax=3.5,]\添加图[蓝色、厚,{圆形}-{圆形},域=-2:2,样本=101,缩短<=-2.4pt,缩短>=-2.4pt]{x^2*sqrt(4-x^2)};\结束{轴}\结束{tikzpicture}\结束{文档}

首先,使用样本=101我们可以调整绘图的终点,使其位于x个轴。然后,使用缩短<=-2.4pt,缩短>=-2.4pt,我们将箭头尖向外移动。默认情况下,圆形箭头尖端的半径是其所附着线条宽度的三倍。您可以将线条设置为厚的即0.8pt。因此,我们需要移动2.4磅。

在此处输入图像描述


或者只添加标记:

\documentclass[border=10pt]{独立}\使用包{pgfplots}\usetikzlibrary{arrows.meta}\pgfplotsset{compat=1.18}\开始{文档}\开始{tikzpicture}\开始{轴}[轴x线=中间,轴y线=中间,xlabel={$x$},ylabel={$y$},ymin=-0.9,ymax=3.5,xmin=-3.5,xmax=3.5,]\添加图[蓝色、厚,域=-2:2,样本=101]{x^2*sqrt(4-x^2)};\添加图[标记=*,蓝色,draw=无,]坐标{(-2,0)(2,0)};\结束{轴}\结束{tikzpicture}\结束{文档}

在此处输入图像描述

1

根据Rmano在评论中的建议,我有一个可行的解决方案:

更换

\addplot[蓝色,厚,{圆圈}-{Circle},domain=-2:2,samples=100]{x^2*sqrt(4-x^2)};

具有

\addplot[blue,thick,-,domain=-2:2,samples=100]{x^2*sqrt(4-x^2)};\绘制[蓝色,填充=蓝色](轴cs:2,0)圆(2pt);\绘制[蓝色,填充=蓝色](轴cs:-2,0)圆(2pt);

缝隙消失了。

这两个\绘制命令在端点处添加我试图从箭头库获取的点。

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.