Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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 将csv数据导入matplotlib时如何使用名称_Python_Matplotlib_Genfromtxt - Fatal编程技术网

Python 将csv数据导入matplotlib时如何使用名称

Python 将csv数据导入matplotlib时如何使用名称,python,matplotlib,genfromtxt,Python,Matplotlib,Genfromtxt,在打印numpy.genfromtxt命令返回的数据时,我不知道如何使用matplotlib中的“名称”。 脚本: 1.我有一个包含列标题和值行的文件 2.我事先不知道列标题——它们是以编程方式生成的,在程序运行期间可能会更改 3.我需要读取数据和列标题,绘制它们并生成相应的图例 我可以通过以下方式读取数据列及其名称: dataArray = numpy.genfromtxt('myData.csv', delimiter = ',', names = True) 然后用 matplotlib

在打印numpy.genfromtxt命令返回的数据时,我不知道如何使用matplotlib中的“名称”。 脚本: 1.我有一个包含列标题和值行的文件 2.我事先不知道列标题——它们是以编程方式生成的,在程序运行期间可能会更改 3.我需要读取数据和列标题,绘制它们并生成相应的图例

我可以通过以下方式读取数据列及其名称:

dataArray = numpy.genfromtxt('myData.csv', delimiter = ',', names = True)
然后用

matplotlib.plot.plot(dataArray)
matplotlib.plot.show()
但我如何创造一个合适的传奇呢?我认为不带参数的legend命令就足够了(例如
matplotlib.plot.legend()
),但事实并非如此。我得到了一个错误:

/usr/lib/python2.7/site packages/matplotlib/axes.py:4601:UserWarning:未找到带标签的对象。在单个绘图上使用label='…'kwarg。 warnings.warn(“未找到带标签的对象。”


换句话说,那些“名字”在哪里去吧,我如何检索它们?在google、matplotlib站点和numy站点上的多次搜索都没有结果。

您必须在
plot
函数中为要打印的每一行提供一个
label=..
关键字,因为matplotlib不会自动检测numpy结构化数组中的名称(你也可以使用熊猫,它可以做到这一点,见下文)

例如,假设您的数据如下所示:

from StringIO import StringIO

myDatacsv = StringIO("""a, b, c
1, 2, 3
2, 3, 4
3, 4, 5""")
使用
numpy.genfromtxt
读取它们会生成一个结构化数组:

>>> import numpy as np
>>> dataArray = np.genfromtxt(myDatacsv, delimiter = ',', names = True)
>>> dataArray
array([(1.0, 2.0, 3.0), (2.0, 3.0, 4.0), (3.0, 4.0, 5.0)], 
      dtype=[('a', '<f8'), ('b', '<f8'), ('c', '<f8')])

这将生成如下图形:

from StringIO import StringIO

myDatacsv = StringIO("""a, b, c
1, 2, 3
2, 3, 4
3, 4, 5""")

对于熊猫,这将生成相同的图形(自动绘制数据框的所有列并将其添加到图例中):


有关pandas的更多信息,请参阅:

您能显示数据摘要吗?谢谢!我缺少的是数据类型位。我不知道列名称的结尾在哪里。同时感谢指向pandas的指针。我会查看它。
import pandas as pd

# one of the following will do (reading it with pandas, or converting 
# from the numpy array to pandas dataframe)
data_df = pd.read_csv(myDatacsv)
data_df = pd.DataFrame(dataArray)

data_df.plot()