您可以使用numpy.where
獲取y值爲正值或負值的指示,然後繪製相應的值。
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5, -6, 7, 8, 2, 5, 7])
y = np.array([5, 2, 4, -2, 1, 4, 5, 2, -1, -5, -6])
ipos = np.where(y >= 0)
ineg = np.where(y < 0)
plt.scatter(x[ipos], y[ipos], label='Positive', color='b', s=25, marker="o")
plt.scatter(x[ineg], y[ineg], label='Negative', color='r', s=25, marker="x")
plt.xlabel('x')
plt.ylabel('y')
plt.title('Test')
plt.legend()
plt.show()
編輯
您可以通過它們與&
- 運算符(和運營商)分離爲
i_opt1 = np.where((y >= 0) & (0 < x) & (x < 3)) # filters out positive y-values, with x-values between 0 and 3
i_opt2 = np.where((y < 0) & (3 < x) & (x < 6)) # filters out negative y-values, with x between 3 and 6
plt.scatter(x[i_opt1], y[i_opt1], label='First set', color='b', s=25, marker="o")
plt.scatter(x[i_opt2], y[i_opt2], label='Second set', color='r', s=25, marker="x")
添加幾個條件的np.where
執行相同的你所有的不同要求。
Example of multiple conditions
Link to documentation of np.where
感謝您的代碼和我稍作修改它添加軸。但是我有一個附加問題,我得到另一個變量z,它必須映射到這個圖表上,並且它只對標記類型有說法。 -1