简体   繁体   English

如果x条目满足条件python,则绘制x-y数据

[英]Plot x-y data if x entry meets condition python

I would like to perform plots/fits for xy data, provided that the data set's x values meet a condition (ie are greater than 10). 我想对xy数据执行绘图/拟合,前提是数据集的x值满足条件(即大于10)。

My attempt: 我的尝试:

x_values, y_values = loadtxt(fname, unpack=True, usecols=[1, 0])

for x in x_values:
    if x > 10:
        (m,b)=polyfit(x_values,y_values,1)
        yp = polyval([m,b],x_values)
        plot(x_values,yp)
        scatter(x_values,y_values)
    else:
        pass

Perhaps it would be better to remove xy entries for rows where the x value condition is not met, and then plot/fit? 也许最好删除不满足x值条件的行的xy条目,然后绘制/拟合?

Sure, just use boolean indexing. 当然,只需使用布尔索引。 You can do things like y = y[x > 10] . 你可以做y = y[x > 10]类的事情。

Eg 例如

import numpy as np
import matplotlib.pyplot as plt

#-- Generate some data...-------
x = np.linspace(-10, 50, 100)
y = x**2 + 3*x + 8

# Add a lot of noise to part of the data...
y[x < 10] += np.random.random(sum(x < 10)) * 300

# Now let's extract only the part of the data we're interested in...
x_filt = x[x > 10]
y_filt = y[x > 10]

# And fit a line to only that portion of the data.
model = np.polyfit(x_filt, y_filt, 2)

# And plot things up
fig, axes = plt.subplots(nrows=2, sharex=True)
axes[0].plot(x, y, 'bo')
axes[1].plot(x_filt, y_filt, 'bo')
axes[1].plot(x, np.polyval(model, x), 'r-')

plt.show()

在此输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM