Python和Matplotlib:如何绘制一组只知道极值的线段?
我有一个问题,我已经尝试解决了几天了,但似乎我越是尝试,我离解决的距离就越远 我有一个代码可以做很多事情,最后它生成两个19x2数组(都是Python和Matplotlib:如何绘制一组只知道极值的线段?,python,matplotlib,typeerror,Python,Matplotlib,Typeerror,我有一个问题,我已经尝试解决了几天了,但似乎我越是尝试,我离解决的距离就越远 我有一个代码可以做很多事情,最后它生成两个19x2数组(都是dtype=float64),一个用于段的左端坐标,另一个用于右端坐标: l_ext = (19, 2) [[0.3 2.18327756] [0.8 0.78647796] [1.3 1.0077252 ] [1.8 2.40453182] [2.3 2.18328295]
dtype=float64
),一个用于段的左端坐标,另一个用于右端坐标:
l_ext = (19, 2)
[[0.3 2.18327756]
[0.8 0.78647796]
[1.3 1.0077252 ]
[1.8 2.40453182]
[2.3 2.18328295]
[2.8 0.7864866 ]
[3.3 1.00775437]
[3.8 2.40455773]
[4.3 2.18328834]
[4.8 0.78649524]
[5.3 1.00778353]
[5.8 2.40458364]
[6.3 2.18329373]
[6.8 0.78650388]
[7.3 1.00781269]
[7.8 2.40460955]
[8.3 2.18329912]
[8.8 0.78651252]
[9.3 1.00784186]]
r_ext = (19, 2)
[[0.7 1.00769604]
[1.2 0.78646933]
[1.7 2.18327218]
[2.2 2.40448 ]
[2.7 1.00766689]
[3.2 0.78646069]
[3.7 2.18326679]
[4.2 2.40445409]
[4.7 1.00763773]
[5.2 0.78645206]
[5.7 2.18326141]
[6.2 2.40442819]
[6.7 1.00760858]
[7.2 0.78644343]
[7.7 2.18325603]
[8.2 2.40440228]
[8.7 1.00757942]
[9.2 0.7864348 ]
[9.7 2.18325065]]
最后,我将阵列合并为一个阵列,获得:
bl_ext = (2, 19, 2)
[[[0.3 2.18327756]
[0.8 0.78647796]
[1.3 1.0077252 ]
[1.8 2.40453182]
[2.3 2.18328295]
[2.8 0.7864866 ]
[3.3 1.00775437]
[3.8 2.40455773]
[4.3 2.18328834]
[4.8 0.78649524]
[5.3 1.00778353]
[5.8 2.40458364]
[6.3 2.18329373]
[6.8 0.78650388]
[7.3 1.00781269]
[7.8 2.40460955]
[8.3 2.18329912]
[8.8 0.78651252]
[9.3 1.00784186]]
[[0.7 1.00769604]
[1.2 0.78646933]
[1.7 2.18327218]
[2.2 2.40448 ]
[2.7 1.00766689]
[3.2 0.78646069]
[3.7 2.18326679]
[4.2 2.40445409]
[4.7 1.00763773]
[5.2 0.78645206]
[5.7 2.18326141]
[6.2 2.40442819]
[6.7 1.00760858]
[7.2 0.78644343]
[7.7 2.18325603]
[8.2 2.40440228]
[8.7 1.00757942]
[9.2 0.7864348 ]
[9.7 2.18325065]]]
然后,我尝试使用以下方法绘制线段:
x = np.arange[0,10]
y = np.array(x+1)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.arange[0,10],)
blines = mc.LineCollection
ax.add_collection(blines)
plt.show()
但我得到的是一条我无法理解的错误信息:
TypeError: Cannot cast array data from dtype('<U2') to dtype('float64') according to the rule 'safe'
TypeError:无法从dtype(“使用示例中的数据,我将执行以下操作:
import matplotlib.pyplot as plt
l_ext = [
[0.3, 2.18327756],
[0.8, 0.78647796],
[1.3, 1.0077252 ],
[1.8, 2.40453182],
[2.3, 2.18328295],
[2.8, 0.7864866 ],
[3.3, 1.00775437],
[3.8, 2.40455773],
[4.3, 2.18328834],
[4.8, 0.78649524],
[5.3, 1.00778353],
[5.8, 2.40458364],
[6.3, 2.18329373],
[6.8, 0.78650388],
[7.3, 1.00781269],
[7.8, 2.40460955],
[8.3, 2.18329912],
[8.8, 0.78651252],
[9.3, 1.00784186]]
r_ext = [
[0.7, 1.00769604],
[1.2, 0.78646933],
[1.7, 2.18327218],
[2.2, 2.40448 ],
[2.7, 1.00766689],
[3.2, 0.78646069],
[3.7, 2.18326679],
[4.2, 2.40445409],
[4.7, 1.00763773],
[5.2, 0.78645206],
[5.7, 2.18326141],
[6.2, 2.40442819],
[6.7, 1.00760858],
[7.2, 0.78644343],
[7.7, 2.18325603],
[8.2, 2.40440228],
[8.7, 1.00757942],
[9.2, 0.7864348 ],
[9.7, 2.18325065]]
for left, right in zip(l_ext, r_ext):
print left, right
plt.plot( [left[0],right[0]], [left[1],right[1]], 'k')
plt.show()
这将生成以下绘图:
使用您示例中的数据,我将执行以下操作:
import matplotlib.pyplot as plt
l_ext = [
[0.3, 2.18327756],
[0.8, 0.78647796],
[1.3, 1.0077252 ],
[1.8, 2.40453182],
[2.3, 2.18328295],
[2.8, 0.7864866 ],
[3.3, 1.00775437],
[3.8, 2.40455773],
[4.3, 2.18328834],
[4.8, 0.78649524],
[5.3, 1.00778353],
[5.8, 2.40458364],
[6.3, 2.18329373],
[6.8, 0.78650388],
[7.3, 1.00781269],
[7.8, 2.40460955],
[8.3, 2.18329912],
[8.8, 0.78651252],
[9.3, 1.00784186]]
r_ext = [
[0.7, 1.00769604],
[1.2, 0.78646933],
[1.7, 2.18327218],
[2.2, 2.40448 ],
[2.7, 1.00766689],
[3.2, 0.78646069],
[3.7, 2.18326679],
[4.2, 2.40445409],
[4.7, 1.00763773],
[5.2, 0.78645206],
[5.7, 2.18326141],
[6.2, 2.40442819],
[6.7, 1.00760858],
[7.2, 0.78644343],
[7.7, 2.18325603],
[8.2, 2.40440228],
[8.7, 1.00757942],
[9.2, 0.7864348 ],
[9.7, 2.18325065]]
for left, right in zip(l_ext, r_ext):
print left, right
plt.plot( [left[0],right[0]], [left[1],right[1]], 'k')
plt.show()
这将生成以下绘图:
我只想绘制水平段,但这肯定是正确的方向。你在问题中没有这样说。如果是这样,我会重新定义输入数据并使用相同的代码。我只想绘制水平段,但这肯定是正确的方向。你在问题中没有这样说。如果是这样的话在这种情况下,我会重新定义输入数据并使用相同的代码。