在 Matplotlib 中,有没有办法画一条末端带有圆圈或条形“帽”的线

问题描述 投票:0回答:1

在 Matplotlib 中,您可以使用

Axes.arrow
绘制箭头(https://matplotlib.org/3.5.0/api/_as_gen/matplotlib.axes.Axes.arrow.html)。

是否有类似的函数可以在末端画一条带有圆或其他对接的线?我本以为这是

Axes.arrow
的关键字参数选项,但它似乎不存在。

python matplotlib plot
1个回答
2
投票

只是一个关于类和继承的想法,但我认为 @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()

您可以获得其他参数(线宽等)以应用于您的补丁对象。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.