首页 > 解决方案 > 隐藏或将 y 值设置为 0

问题描述

我正在从 .txt 文件中导入数据并绘制它,这是可行的。

现在我想隐藏数据的某些部分,即我想将间隔 x 的所有 y 值设置为 0 或更好地完全隐藏它们,图的其余部分不应该消失。

    data = pd.read_csv('C:\\users\johan\Documents\Arbeit\Schwarzkoerper\Avasoft\winkel3\\'+''.join(L[k]),sep='\;',skiprows=10,decimal=",",header=None)
data = pd.DataFrame(data) #muss sein
x = data[0]*10**(-9)
y = data[1]
plt.plot(x, y*Teilung())
plt.axis([450*10**(-9), 1100*10**(-9), 0, 60000])
plt.show

具体来说:我想在 [500-600*10**(-9)] 中隐藏 x 的 y 值

标签: pythonpandasplot

解决方案


使用带有布尔条件的以下列操作可能仅从 y 值中过滤您需要的数据。

df.y[(df.x < 500 * 1e-9) | (df.x > 600 * 1e-9)]

然后在原始 x 值上使用新的 y 值范围。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

lower_bound = 500 * 1e-9
upper_bound = 600 * 1e-9

df = pd.DataFrame({
    "x" : np.linspace(0,1100*1e-9,100),
    "y" : [5*np.cos(i)+i for i in range(100)]
})
#original values
plt.plot(df.iloc[:,0], df.iloc[:,1])

hidden_df = df.y[(df.x < lower_bound) | (df.x > upper_bound)]

plt.plot(df.iloc[:len(hidden_df), 0], hidden_df)
plt.ticklabel_format(axis="x", style="sci", scilimits=(0,0))
plt.legend(("Original", "Hidden"))

plt.grid()
plt.show()

original_and_hidden_​​plots


推荐阅读