Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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_Plot - Fatal编程技术网

Python matplotlib中的元组索引超出范围

Python matplotlib中的元组索引超出范围,python,matplotlib,plot,Python,Matplotlib,Plot,我对Python还很陌生。我正在尝试使用matplotlib从总共有17列的文件中绘制第0列和第16列。我使用了以下代码: import matplotlib.pyplot as plt plt.plotfile('full_energy.dat', skiprows=3, delimiter=' ', cols=(0,16), names=('Time(ns)', 'Binding Energy(kJ/mol)')) plt.show() 并得到以下错误: Traceback (most

我对Python还很陌生。我正在尝试使用matplotlib从总共有17列的文件中绘制第0列和第16列。我使用了以下代码:

import matplotlib.pyplot as plt

plt.plotfile('full_energy.dat', skiprows=3, delimiter=' ', cols=(0,16), names=('Time(ns)', 'Binding Energy(kJ/mol)'))
plt.show()
并得到以下错误:

Traceback (most recent call last):
  File "./plotting.py", line 6, in <module>
    plt.plotfile('full_energy.dat', skiprows=3, delimiter=' ', cols=(16,0), names=('Time(ns)', 'Binding Energy(kJ/mol)'))
  File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 2434, in plotfile
    xname, x = getname_val(cols[0])
  File "/usr/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 2429, in getname_val
    name = r.dtype.names[int(identifier)]
IndexError: tuple index out of range
可以使用将文件读入numpy数组,然后打印所需的列

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt("full_energy.dat")

plt.plot(data[:,0], data[:,15])
plt.show()
根据您提供的数据,可得出以下图表:


第16列的FYI指数为15,列总数为17。但是,我也尝试使用(0,15)绘制第16列。它产生了相同的错误。当您试图绘制倒数第二列时,您能否尝试
(0,-2)
?我正在尝试绘制最后一列,即第17列。因此,请尝试
(0,-1)
import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt("full_energy.dat")

plt.plot(data[:,0], data[:,15])
plt.show()