在Matplotlib中,有没有一种方法可以用圆或bar绘制一条线。在末端

发布于 2025-01-21 05:23:39 字数 380 浏览 0 评论 0原文

在matplotlib中,您可以使用axes.arrow https://matplotlib.org/3.5.0/api/_as_as_gen/matplotlib.axes.axes.axes.axes.arrow.html )。

在末尾绘制带有圆或其他屁股的线的函数是否有类似的功能?我希望这是axes.arrow的关键字参数选项,但似乎不存在。

In Matplotlib, you can draw an arrow using Axes.arrow (https://matplotlib.org/3.5.0/api/_as_gen/matplotlib.axes.Axes.arrow.html).

Is there a similar function for drawing a line with a circle or other butt at the end? I would've expected this to be a keyword argument option for Axes.arrow, but it doesn't seem to exist.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

腹黑女流氓 2025-01-28 05:23:39

只是一个具有类和继承的想法,但我认为@Johanc链接更好:

from matplotlib.lines import Line2D
import matplotlib.pyplot as plt
import matplotlib.patches as pt


class Line2D(Line2D):
    def draw(self, rdr):
        super().draw(rdr)
        xy = self.get_xydata()
        start, end = xy[0], xy[-1]
        r = pt.Rectangle((start[0] - .05, start[1] - .05), .1, .1,
                         color=self.get_color(),
                         fill=None)
        plt.gca().add_patch(r)
        c = pt.Ellipse(end, .05, .05,
                       color=self.get_color(),
                       fill=True)
        plt.gca().add_patch(c)

fig = plt.figure()
ax = fig.add_subplot()
rg = [-.5, 1.5]
ax.set_xlim(rg)
ax.set_ylim(rg)

l = Line2D([0, 1], [0, 1], color="green")
ax.add_artist(l)

plt.show()

您可以获取其他参数(lineWidth等),以应用于您的补丁程序。

Just an idea with classes and inheritance but I think @johanc links are better:

from matplotlib.lines import Line2D
import matplotlib.pyplot as plt
import matplotlib.patches as pt


class Line2D(Line2D):
    def draw(self, rdr):
        super().draw(rdr)
        xy = self.get_xydata()
        start, end = xy[0], xy[-1]
        r = pt.Rectangle((start[0] - .05, start[1] - .05), .1, .1,
                         color=self.get_color(),
                         fill=None)
        plt.gca().add_patch(r)
        c = pt.Ellipse(end, .05, .05,
                       color=self.get_color(),
                       fill=True)
        plt.gca().add_patch(c)

fig = plt.figure()
ax = fig.add_subplot()
rg = [-.5, 1.5]
ax.set_xlim(rg)
ax.set_ylim(rg)

l = Line2D([0, 1], [0, 1], color="green")
ax.add_artist(l)

plt.show()

You can get other parameters (linewidth etc) to apply to your patches objetcs.

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文