8

我试图弄清楚如何在数据单元中绘制具有宽度的线条。例如,在下面的代码片段中,我希望宽度为 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()

屏幕坐标中的线宽

4

2 回答 2

8

You could use 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()

yields

enter image description here

but unlike the line generated by

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

the vertical thickness of the line will always be constant in data coordinates.

See also link to documentation.

于 2013-02-10T14:00:34.127 回答
2

为了以数据单位的线宽绘制一条线,您可能想看看这个答案

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

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

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

于 2017-03-23T09:54:07.857 回答