我有数据:
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)
但是我该如何显示这条线呢?
您应该将线条添加到绘图中,然后显示它:
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()
结果:
更常见的方法(不完全是提问者所要求的)是使用 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()
当我尝试在两个不同的地块上复制一条线时,我遇到了这个问题。 (在评论中提到“不能将单个艺术家放在多个图中) 因此,假设您已经从其他来源获得了 Line2D 对象,并且需要在新绘图中使用它,则将其添加到绘图中的最佳方法是:
line = Line2D(x, y)
plt.plot(*line.get_data(), ...)
您还可以从其他“获取”方法获取线路的许多属性,在此处找到。
在[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()
如果您想将
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
中。