我有一个非常雄心勃勃的项目(对于我的新手水平)要在 numpy 数组上使用,我在其中加载一系列数据,并根据我的需要制作不同的图 - 我已经上传了数据文件 input_data 的精简版本和想要基于以下条件绘制图: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()
这没有任何作用......而且我还有很长的路要走..
最佳答案
使用 pandas 你可以做到:
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))
关于python - 从 numpy 数组绘制多个数据系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15145287/