python - 从 numpy 数组绘制多个数据系列

标签 python numpy matplotlib loops

我有一个非常雄心勃勃的项目(对于我的新手水平)要在 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/

相关文章:

python - 如何有效地比较 pandas DataFrame 中的行?

python - pip install matplotlib 在 termux (Android) 下不起作用

python - 绘制水平线,y = matplotlib 中的常量

python - 在 Windows 中手动将包添加到 PyCharm

python - 如果列及其值存在于两个数据框中,如何合并两个数据框?

python - 从 .txt 文件发出读取数组

python绘图通过groupby过滤

python - 在Python中为系统用户更改壁纸

python - 使用 bool 矩阵替换 for 循环以执行高级索引

java - 从 Java 发送数据到 Python 然后返回响应