如何根据第三列值为2D数据点设置红叉/蓝圈标记?能否用plt.plot实现?
用plt.plot()实现按第三列值区分散点样式
当然可以用plt.plot()实现这个需求!核心思路是把数据按第三列的取值分成两组,分别调用plt.plot()设置对应的样式就可以了。
具体实现步骤
- 首先按第三列的取值筛选出不同的数据集
- 对每组数据单独调用
plt.plot(),指定对应的颜色和标记样式
完整代码示例
import numpy as np import matplotlib.pyplot as plt # 你的原始数组 arr = np.array([[1, 2, -1], [1, 3, 1], [3, 2, -1], [5, 2, -1]]) # 筛选第三列为-1的点 mask_neg = arr[:, 2] == -1 x_neg, y_neg = arr[mask_neg, 0], arr[mask_neg, 1] # 筛选第三列为1的点 mask_pos = arr[:, 2] == 1 x_pos, y_pos = arr[mask_pos, 0], arr[mask_pos, 1] # 分别绘制两组点 plt.plot(x_neg, y_neg, 'xr', label='Value = -1') # 红色的'x'标记 plt.plot(x_pos, y_pos, 'bo', label='Value = 1') # 蓝色的'o'标记 # 可选:添加图例、坐标轴标签让图表更清晰 plt.xlabel('X Column') plt.ylabel('Y Column') plt.legend() plt.show()
补充说明
如果你的第三列还有其他取值,只需要按照相同的逻辑添加新的筛选条件和plt.plot()调用即可。另外,虽然plt.scatter()可以通过参数一次性设置不同样式,但既然你明确要求用plt.plot(),这个分组合绘制的方法完全能满足你的需求。
内容的提问来源于stack exchange,提问作者Sahand
相关产品推荐
相关产品推荐

