Python 从numpy阵列绘制多个数据系列

Python 从numpy阵列绘制多个数据系列,python,numpy,matplotlib,loops,Python,Numpy,Matplotlib,Loops,我有一个非常雄心勃勃的项目(对于我的新手级别)要在numpy array上使用,我加载了一系列数据,并根据我的需要绘制不同的绘图-我上传了一个精简版本的数据文件,并希望绘制基于:F的绘图(在循环之前,我希望选择所需的F),每个系列都有来自E列的数据(例如,图中的A12一个数据系列,A23另一个数据系列等),在X轴上,我想使用D中的相应值 因此,为了总结F列上选择的值,我希望有4个不同的数据系列(如E列上的变量数量),数据应该是D列(即日期)值上的参考(x轴) 我在第一步(尽管花费了太多时间)中遇

我有一个非常雄心勃勃的项目(对于我的新手级别)要在numpy array上使用,我加载了一系列数据,并根据我的需要绘制不同的绘图-我上传了一个精简版本的数据文件,并希望绘制基于:F的绘图(在循环之前,我希望选择所需的F),每个系列都有来自E列的数据(例如,图中的A12一个数据系列,A23另一个数据系列等),在X轴上,我想使用D中的相应值

因此,为了总结F列上选择的值,我希望有4个不同的数据系列(如E列上的变量数量),数据应该是D列(即日期)值上的参考(x轴)

我在第一步(尽管花费了太多时间)中遇到了困难,我想用F列标识符将所有数据绘制为一个图。 以下是我到目前为止的情况:

import os 
import numpy as np
N = 8 #different values on column F
M = 4 #different values on column E
dataset = open('array_data.txt').readlines()[1:]
data = np.genfromtxt(dataset)
my_array = data
day = len(my_array)/M/N # number of measurement sets - variation on column D
for i in range(0, len(my_array), N):
    plt.xlim(0, )
    plt.ylim(-1, 2)
    plt.plot(my_array[i, 0], my_array[i, 2], 'o')
    plt.hold(True)
plt.show()

这没用。。。。我还有很长的路要走。

有了熊猫,你可以做:

import pandas as pd
dataset = pd.read_table("toplot.txt", sep="\t")
#make D index (automatically puts it on the x axis)
dataset.set_index("D", inplace=True)
#plotting R vs. D
dataset.R.plot()
#plotting F vs. D
dataset.F.plot()
dataset
是一个
DataFrame
对象和
DataFrame.plot
只是matplotlib函数的包装器,用于绘制序列

我不清楚您想要如何绘制它,但听起来您需要选择列的一些值。这将是:

# get where F == 1000
maskF = dataset.F == 1000
# get the values where F == 1000
rows = dataset[maskF]
# get the values where A12 is in column E
rows = rows[rows.E == "A12"]
#remove the we don't want to see
del rows["E"]
del rows["F"]
#Plot the result
rows.plot(xlim=(0,None), ylim=(-1,2))

genfromtxt
需要文件名或文件对象,而不是字符串列表。尝试
data=np.genfromtxt('array\u data.txt',skip\u header=1)
。并尝试一步一步地调试:确保在绘制数据之前拥有良好的数据。@WarrenWeckesser感谢您的提示;有助于了解跳过标题;上一行末尾的[1:]解决了标题问题-我可以加载数据,但当我尝试将单个点作为绘图时,您听说过吗?听起来像是你想用的东西。您可以将数据加载到数据框中,然后从那里进行绘图。如果你给我一个数据样本,我可以给你看。@Raufio是的,我实际上用过一次pands——但基本上我遵循了给我的一个例子,我只是根据我的数据调整了它——所以我一点经验都没有;如果你看到这个问题,我有一个链接,带你到样本数据-这里再次()谢谢!谢谢你的示例代码-我会处理它,并让你知道我是否能从中得到任何东西(已经有2个例外-se_索引给我重复的错误,并且ylim没有定义…)无论如何-我会发布更新。感谢set_索引只是为了方便。你可以把它拿出来做
绘图(x=“D”)
。似乎得到了一些有意义的绘图!!!我会继续努力,回来问更多关于微调的问题-谢谢@Dimitris如果这个答案完全回答了你提出的问题,你应该接受这个答案,并为接下来的问题提出一个新的问题。它有助于保持网站整洁,每个线程有一个问题。@是的,我计划在我确定答案有效后这样做-现在我认为我在正确的轨道上-我的缓慢更新是由于我缺乏经验和时间-但如果确实有效,将更新以显示已解决