Matplotlib:绘制宽度在数据坐标中给出的线条

时间:2013-02-10 13:37:17

标签: python matplotlib

我正在试图弄清楚如何以数据单位绘制宽度为的线条。例如,在下面的代码片段中,我希望宽度为80的线的水平部分始终从y = -40延伸到y = + 40标记,即使坐标系的限制也保持这种状态更改。有没有办法用matplotlib中的Line2D对象来实现这个目的?还有其他方法可以获得类似的效果吗?

from pylab import figure, gca, Line2D

figure()
ax = gca()
ax.set_xlim(-50, 50)
ax.set_ylim(-75, 75)

ax.add_line(Line2D([-50, 0, 50], [-50, 0, 0], linewidth=80))

ax.grid()

line width in screen coordinates

2 个答案:

答案 0 :(得分:6)

您可以使用fill_between

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.set_xlim(-50, 50)
ax.set_ylim(-75, 75)
x = [-50, 0, 50]
y = np.array([-50, 0, 0])

ax.fill_between(x,y-30,y+30)

ax.grid()
plt.show()

产量

enter image description here

但与

生成的行不同
ax.add_line(Line2D([-50, 0, 50], [-50, 0, 0], linewidth=80))

线的垂直厚度在数据坐标中始终是恒定的。

另见link to documentation

答案 1 :(得分:1)

为了以数据单位绘制线宽,您可能需要查看 this answer

它使用类data_linewidth_plot,它与plt.plot()命令的签名非常相似。

l = data_linewidth_plot( x, y, ax=ax, label='some line', linewidth = 1, alpha = 0.4)

linewidth参数以(y-)数据单位解释。