【问题标题】:filter condition for plotting绘图的过滤条件
【发布时间】: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


【解决方案1】:

进行以下更改:(python 中第 6 列的索引为 5)

plt.plot(a[0][a[5]==0], a[1][a[5]==0], c=cmap.to_rgba(i+1),label=num[-3:], lw=0.75)

【讨论】:

    猜你喜欢
    • 2020-06-26
    • 1970-01-01
    • 2020-12-03
    • 2020-01-18
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多