Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matplotlib python中绘制满足另一列条件的数据范围_Python_Matplotlib - Fatal编程技术网

在matplotlib python中绘制满足另一列条件的数据范围

在matplotlib python中绘制满足另一列条件的数据范围,python,matplotlib,Python,Matplotlib,我是python新手。我有一个四列数组。我想绘制第2列和第3列,直到第1列满足一个条件。如果列1不满足此范围,则在下一个子批次中绘制。我已经看到,使用where函数可以做到这一点——只是不知道该怎么做 例如: import numpy as np import scipy as sp import matplotlib.pyplot as plt data = np.array([[17., 18., 19., 20., 31., 46.],\ [1.52,2.5,2.55,2.56,2.53

我是python新手。我有一个四列数组。我想绘制第2列和第3列,直到第1列满足一个条件。如果列1不满足此范围,则在下一个子批次中绘制。我已经看到,使用where函数可以做到这一点——只是不知道该怎么做

例如:

import numpy as np
import scipy as sp
import matplotlib.pyplot as plt

data = np.array([[17., 18., 19., 20., 31., 46.],\
[1.52,2.5,2.55,2.56,2.53,2.54],\
[7.04,7.06,9.05,11.08,7.06,11.06],\
[0.,0.,0.,0.,4.,4.]])
第一轮并更换第二列:

dataRound = sp.round_(data,1)
data[:,1] = dataRound[:,1]
然后定位/绘制两种不同的条件:

if np.where(data[i]==1.5):
    subplot(211)
    plt.scatter(data[:,1],data[:,2])
elif np.where(data[i] ==2.5):
    subplot(212)
    plt.scatter(data[:,1], data[:,2])

以下是回答您问题的代码片段:

t=linspace(0,1000, 1000)
y=sin(0.1*t)
ii=find(t>100)
plot(t[ii],y[ii])
基本上,使用
find
可以生成满足逻辑条件(t>100)的索引列表,然后使用该列表

p、 美国把np。和plt。需要的地方

更新:

这是你需要的吗?注意,您必须交换[1,:],而不是[:,1]。建议-打印出你正在做的事情以确保

import numpy as np
import scipy as sp
import matplotlib.pyplot as plt

data = np.array([[17., 18., 19., 20., 31., 46.],\
[1.52,2.5,2.55,2.56,2.53,2.54],\
[7.04,7.06,9.05,11.08,7.06,11.06],\
[0.,0.,0.,0.,4.,4.]])

dataRound = sp.round_(data,1)
data[1,:] = dataRound[1,:]
ax1=plt.subplot(211)
ax2=subplot(212)

ax1.scatter(data[1,data[1,:]<=1.5], data[2,data[1,:]<=1.5], color = 'g')
ax2.scatter(data[1,data[1,:]>=2.5], data[2,data[1,:]>=2.5], color = 'b')
将numpy导入为np
将scipy作为sp导入
将matplotlib.pyplot作为plt导入
数据=np.数组([[17,18,19,20,31,46])\
[1.52,2.5,2.55,2.56,2.53,2.54],\
[7.04,7.06,9.05,11.08,7.06,11.06],\
[0.,0.,0.,0.,4.,4.]])
dataRound=sp.round(数据,1)
数据[1,:]=dataRound[1,:]
ax1=plt.子批次(211)
ax2=子批次(212)
ax1.scatter(数据[1,数据[1,:]=2.5],颜色='b')
如果要绘制第二列和第三列,则:

ax1.scatter(data[2,data[1,:]<=1.5], data[3,data[1,:]<=1.5], color = 'g')
ax2.scatter(data[2,data[1,:]>=2.5], data[3,data[1,:]>=2.5], color = 'b')
ax1.scatter(数据[2,数据[1,:]=2.5],颜色='b')

对于阵列,您将如何执行此操作?其中一列中的某些值可能会出现在另一列中,即使它们应该被忽略。此外,数组中没有依赖项