Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和Matplotlib:如何绘制一组只知道极值的线段?_Python_Matplotlib_Typeerror - Fatal编程技术网

Python和Matplotlib:如何绘制一组只知道极值的线段?

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]

我有一个问题,我已经尝试解决了几天了,但似乎我越是尝试,我离解决的距离就越远

我有一个代码可以做很多事情,最后它生成两个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]
 [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()
这将生成以下绘图:


我只想绘制水平段,但这肯定是正确的方向。你在问题中没有这样说。如果是这样,我会重新定义输入数据并使用相同的代码。我只想绘制水平段,但这肯定是正确的方向。你在问题中没有这样说。如果是这样的话在这种情况下,我会重新定义输入数据并使用相同的代码。