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

时间:2019-07-19 00:42:48

标签: 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_ylabel('% Variance Explained')
ax.set_xlabel('# of Features')
ax.set_title('PCA Analysis')
ax.set_ylim(var.min(),var.max()+1)
plt.show()

输出以下图: enter image description here

但是绿线应该在红线结束时开始,我该如何偏移绿线?

2 个答案:

答案 0 :(得分:1)

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

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


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()

enter image description here

答案 1 :(得分:0)

简单地说:

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