Python 在matlibplot中绘制线图时如何偏移x轴

Python 在matlibplot中绘制线图时如何偏移x轴,python,matplotlib,Python,Matplotlib,我试图绘制PCA解释的特征数量与方差。我想使用线条颜色突出显示方差大于95%的情况 到目前为止,我已获得以下代码 pcaPlotData = { 'r':var[np.argwhere(var < 95)], 'g':var[np.argwhere(var >= 95)] } fig, ax = plt.subplots() for k, v in pcaPlotData.items(): ax.plot(v, color = k) ax.set_ylabe

我试图绘制PCA解释的特征数量与方差。我想使用线条颜色突出显示方差大于95%的情况

到目前为止,我已获得以下代码

pcaPlotData = {
    'r':var[np.argwhere(var < 95)],
    'g':var[np.argwhere(var >= 95)]
}

fig, ax = plt.subplots()
for k, v in pcaPlotData.items():
    ax.plot(v, color = k)
ax.set_ylabel('% Variance Explained')
ax.set_xlabel('# of Features')
ax.set_title('PCA Analysis')
ax.set_ylim(var.min(),var.max()+1)
plt.show()
输出以下曲线图:

然而,绿线应该在红线结束时开始,我该如何抵消绿线?

简单地说:

x = np.argwhere(var < 95)
ax.plot(x, var[x], 'r')
x = np.argwhere(var >= 95)
ax.plot(x, var[x], 'g')

如果您的输入数据是NumPy数组,那么另一种解决方案可能如下所示。这里创建一个条件掩码,然后使用~mask访问不满足条件的元素。这样可以避免两次创建遮罩

以下是一个完整的可运行示例:

阅读绘图文档?可以指定x值:ax.plotx,y。
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(40)
var = x**2

# Define the conditional mask
mask = (var<95)

plt.plot(x[mask], var[mask], 'r') # Data fulfilling the condition
plt.plot(x[~mask], var[~mask], 'g') # Data not fulfilling the condition
plt.show()