从不同视角绘制三维散点图

import numpy as np
from matplotlib import pyplot as plt
positive_data = arr_feature_pca[y_dbscan_pred != -1, :]
negative_data = arr_feature_pca[y_dbscan_pred == -1, :]
# --------------------------------------- 定义绘图函数 -----------------------------------
def point3d(ax, theta1, theta2):
    # 绘制 3D 散点

    ax.scatter(positive_data[:, 0], positive_data[:, 1], positive_data[:, 2], s=5, c='g', marker='o', label='Normal')
    ax.scatter(negative_data[:, 0], negative_data[:, 1], negative_data[:, 2], s=5, c='r', marker='o', label='Abnormal')

    # 设置坐标轴标签
    ax.set_xlabel('X')
    ax.set_ylabel('Y')
    ax.set_zlabel('Z')

    # 设置视角
    # ax.view_init(elev=30, azim=135)
    # # 显示图例
    # ax.legend()

    # 调整视角
    ax.view_init(elev=theta1,  # 仰角
                 azim=theta2  # 方位角
                 )


from pylab import mpl
# 使图表元素中正常显示中文
mpl.rcParams['font.sans-serif'] = 'SimHei'
# 使坐标轴刻度标签正常显示负号
mpl.rcParams['axes.unicode_minus'] = False

fig = plt.figure(figsize=(32, 28),
                 facecolor='lightyellow'
                )
# 创建 3D 坐标系
axes = fig.subplots(nrows=4,
                    ncols=4,
                    subplot_kw=dict(fc='whitesmoke',
                                    projection='3d',
                                   ),
                 )

elevs = [0, 30, 60, 90]
azims = [0, 30, 60, 90]

for i, theta1 in enumerate(elevs):
    for j, theta2 in enumerate(azims):
        ax = axes[i, j]
        point3d(ax, theta1, theta2)
        ax.set_title(f'仰角:{theta1}  方位角:{theta2}')

# 显示图形
plt.show()

说明:arr_feature_pca是特征数据,应用特征数据进行异常检测,得到预测结果为y_dbscan_pred,结果中-1为异常点,其他为正常点,绘制特征数据散点图,正常点和异常点用不同颜色显示。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值