【发布时间】:2020-08-26 10:46:35
【问题描述】:
我有 1000 个文本文件,每个文件包含 6 列。我想通过在第 6 列上应用条件来绘制 2 列,它们是我的 x 和 y。我想要在第 6 列中具有零值的 x 和 y。我可以在不考虑以下条件的情况下编写如何绘制所有内容:
import os
import numpy as np
import matplotlib.pyplot as plt
l = [f for f in sorted(os.listdir('.')) if f.startswith('file')]
maxnum = np.max([int(os.path.splitext(f)[0].split('_')[1]) for f in l])
l = ['file_%d.out' % i for i in range(maxnum)]
for i, d in enumerate(l):
a = np.loadtxt(d).T
num = os.path.splitext(d)[0]
plt.plot(a[0], a[1], c=cmap.to_rgba(i+1),label=num[-3:], lw=0.75)
#plt.colorbar(cmap, ticks = c)
#plt.legend(loc='upper left', bbox_to_anchor=(1.05, 1))
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.title("Longterm simulation")
我知道在绘图时应该在 for 循环中定义条件,但我知道如何做到这一点。
【问题讨论】:
-
您希望申请什么条件?您的意思是要过滤数据以仅包含第 6 列中的值满足某些条件的那些点? IE。您在问:如何过滤 2d numpy 数组以仅包含某些列中的值满足某些条件的行?
-
@Grismar 是的,我想过滤第 6 列并绘制第 2 列在第 6 列中具有非零值的 2 列。我的意思是过滤在第 6 列中具有零值的 x 和 y。
-
@Grismar 不幸的是它不适用于我的。
-
如果您尝试过类似的事情,请使用您尝试过的代码更新您的示例,以便人们可以指出需要具体更改的内容。链接问题中的答案实际上正是在回答您的问题。
标签: python numpy matplotlib