使用matplotlib绘制三维散点图

在这里插入图片描述

# -*- coding: UTF-8 -*-
import random
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib;matplotlib.use('tkagg')

plt.rcParams['font.sans-serif']=['SimHei']  # 指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号


def get_random_data(num):
    random_data = list()
    for i in range(0, num):
        # random_data.append(random.random())
        random_data.append(random.randint(0, 100))
    return random_data


def csdn_plot_3D_scatter():
    """
        plot the 3D scatter picture.
    """
    '''get data ready.'''
    number_of_point = 100
    x_data = range(0, number_of_point)
    y_data_1 = get_random_data(number_of_point)
    y_data_2 = get_random_data(number_of_point)
    y_data_3 = get_random_data(number_of_point)

    '''plot starting ... '''
    fig = plt.figure()
    plt.rcParams['savefig.dpi'] = 1000       # 图片像素
    plt.rcParams['figure.dpi'] = 1000        # 分辨率
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(xs=x_data, ys=0, zs=y_data_1, c='#4d3333', s=12, alpha=1, label='English', marker='*')
    ax.scatter(xs=x_data, ys=1, zs=y_data_2, c='#3333cc', s=12, alpha=1, label='Chinese', marker='o')
    ax.scatter(xs=x_data, ys=2, zs=y_data_3, c='#ff1493', s=12, alpha=1, label='Math', marker='^')
    ax.set_xticklabels([" ", " ", "Students", " ", " "], fontsize=20)
    ax.set_yticklabels(["English", "Chinese", "Math"], fontsize=20)
    ax.set_zlabel('Score', fontsize=16)
    ax.set_xticks([0, 20, 40, 60, 80, 100])	 # x 轴刻度密度
    ax.set_yticks([0, 1, 2])			     # y 轴刻度密度
    ax.set_xlim(left=0, right=100)           # x 轴显示范围
    ax.set_ylim(bottom=0, top=2)             # y 轴显示范围
    plt.tick_params(labelsize=13)		     # 刻度字体大小
    # plt.savefig('student_score.pdf')
    plt.show()


if __name__ == '__main__':

    csdn_plot_3D_scatter()

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  # 空间三维画图
import matplotlib;matplotlib.use('tkagg')

plt.rcParams['font.sans-serif']=['SimHei']  # 指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号

# 数据1
data1 = np.arange(24).reshape((8, 3))
x1 = data1[:, 0]  # [ 0  3  6  9 12 15 18 21]
y1 = data1[:, 1]  # [ 1  4  7 10 13 16 19 22]
z1 = data1[:, 2]  # [ 2  5  8 11 14 17 20 23]

# 数据2
data2 = np.random.randint(0, 23, (6, 3))
x2 = data2[:, 0]
y2 = data2[:, 1]
z2 = data2[:, 2]

# 绘制散点图
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x1, y1, z1, c='r', label='顺序点')
ax.scatter(x2, y2, z2, c='g', label='随机点')

# 绘制图例
ax.legend(loc='best')

# 添加坐标轴(顺序是Z, Y, X)
ax.set_zlabel('Z', fontdict={'size': 15, 'color': 'red'})
ax.set_ylabel('Y', fontdict={'size': 15, 'color': 'red'})
ax.set_xlabel('X', fontdict={'size': 15, 'color': 'red'})

# 展示
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笼中小夜莺

嘿嘿嘿,请用金钱尽情地蹂躏我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值