简体   繁体   中英

Cutting off right hand points using matplotlib.pyplot or numpy

I have some data that I'm plotting with a Python script. After a x-value of ~2000, the data is basically white noise, and needs to be cut out of the graph. I could manually delete from the file, but this would be much easier in the long run by being automated. I prefer to do this using numpy or matplotlib. After a quick documentation scan, I couldn't find any easy solution.

You can set limits to the values shown on the x axis with xlim . In this case:

plt.xlim(xmax=2000)

There is more information in the docs .

If instead you want to hard chop the data itself after x but x is not always exactly 2000 you can use a find nearest code originally found here : Find nearest value in numpy array

Then assign your data x and y to new variables like:

import numpy as np
def find_nearest(array, value):
    array = np.asarray(array)
    idx = (np.abs(array - value)).argmin()
    return [idx]

Cutoff_idx = find_nearest(x, 2000.)

Xnew = x[:Cutoff_idx]
Ynew = y[:Cutoff_idx]

If your x value is continuous then you could do this:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 3001)
y = np.sin(x/250)

plt.plot(x, y)
plt.show()

plt.plot(x[0:2000], y[0:2000])
plt.show()

Note that the second plot cuts off values when x is greater than 2000. If your x array is not continuous then you might need to use logical indexing.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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