在matplotlib中使用Line2D绘制线条

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

我有数据:

x = [10,24,23,23,3]
y = [12,2,3,4,2]

我想用

matplotlib.lines.Line2D(xdata, ydata)
来绘制它。我试过:

import matplotlib.lines
matplotlib.lines.Line2D(x, y)

但是我该如何显示这条线呢?

python matplotlib
5个回答
30
投票

您应该将线条添加到绘图中,然后显示它:

In [13]: import matplotlib.pyplot as plt

In [15]: from matplotlib.lines import Line2D      

In [16]: fig = plt.figure()

In [17]: ax = fig.add_subplot(111)

In [18]: x = [10,24,23,23,3]

In [19]: y = [12,2,3,4,2]

In [20]: line = Line2D(x, y)

In [21]: ax.add_line(line)
Out[21]: <matplotlib.lines.Line2D at 0x7f4c10732f60>

In [22]: ax.set_xlim(min(x), max(x))
Out[22]: (3, 24)

In [23]: ax.set_ylim(min(y), max(y))
Out[23]: (2, 12)

In [24]: plt.show()

结果:

enter image description here


11
投票

更常见的方法(不完全是提问者所要求的)是使用 plot 界面。这涉及到 Line2D 的幕后工作。

>>> x = [10,24,23,23,3]
>>> y = [12,2,3,4,2]
>>> import matplotlib.pyplot as plt
>>> plt.plot(x,y)
[<matplotlib.lines.Line2D object at 0x7f407c1a8ef0>]
>>> plt.show()

1
投票

当我尝试在两个不同的地块上复制一条线时,我遇到了这个问题。 (在评论中提到“不能将单个艺术家放在多个图中) 因此,假设您已经从其他来源获得了 Line2D 对象,并且需要在新绘图中使用它,则将其添加到绘图中的最佳方法是:

line = Line2D(x, y)
plt.plot(*line.get_data(), ...)

您还可以从其他“获取”方法获取线路的许多属性,在此处找到


0
投票

在[13]中:导入 matplotlib.pyplot 作为 plt

在[15]中:从 matplotlib.lines 导入 Line2D

在[16]中:fig = plt.figure()

在[17]中:ax = Fig.add_subplot(111)

在[18]中:x = [10,24,23,23,3]

在[19]中:y = [12,2,3,4,2]

在[20]中:line = Line2D(x, y)

在[21]中:ax.add_line(line) 输出[21]:

在[22]中:ax.set_xlim(min(x), max(x)) 输出[22]: (3, 24)

在[23]中:ax.set_ylim(min(y), max(y)) 输出[23]: (2, 12)

在[24]中:plt.show()


0
投票

如果您想将

Line2D
实例添加到现有
Axes
实例
ax
:

ax.add_line(line)

这将使用该线的所有属性,例如

width
color

如果您没有

Axes
实例,您可以使用以下方法在现有
Figure
实例
fig
上创建一个:

fig.add_axes((x, y, w, h))

其中元组是图形坐标中的位置:

x
y
在0和1之间,
w
h
无论大小,也在图形坐标系中。

如果你没有图,你可以创建一个,或者直接使用静态专用方法:

plt.plot(*line.get_data())

它获取描述 Line2D 点的元组

(xs, ys)
并使用它来创建一个新的
Line2D
插入到新
Axes
的新
Figure
中。

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