栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

三维散点+颜色标记图

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

三维散点+颜色标记图

1. 问题

类似这样的图是怎么绘制的?

2. 方案
  • 貌似matlab的 scatter3可以画。
  • 但是通常来说,用python画图更平滑,也刚好看到了:[Pyplot] 绘制三维散点图使用颜色表示数值大小
    这篇文章有现成的画法,摘录过来备用(做了一定的优化)。
import matplotlib.ticker
import matplotlib.pyplot as plt
import random
# 1.0 初始化数据
# f(x,y,z) = v
# 其中x,y,z为随机数,v=x*y*z
x = [random.randint(0,50) for i in range(0,20)]
y = [random.randint(0,50) for i in range(0,20)]
z = [random.randint(0,50) for i in range(0,20)]
v = [(x[i]+y[i])*z[i] for i in range(0,20)]
# 1.1 根据各个点的值(v[]),设置点的颜色值,每个点的颜色使用一个rgb三维的元组表示,例如,若想让点显示为红色,则颜色值为(1.0,0,0)
# 设置各个点的颜色
# 每个点的颜色值按照colormap("seismic",100)进行设计,其中colormap类型为"seismic",共分为100个级别(level)
min_v = min(v)
max_v = max(v)
color = [plt.get_cmap("seismic", 20)(int(float(i-min_v)/(max_v-min_v)*100)) for i in v]

# 2.0 显示三维散点图
# 新建一个figure()
fig = plt.figure()
# 在figure()中增加一个subplot,并且返回axes
ax = fig.add_subplot(111, projection='3d')
ax.view_init(
                # elev=30,    # 仰角
             azim=225    # 方位角
            )
# 设置colormap,与上面提到的类似,使用"seismic"类型的colormap,共100个级别
plt.set_cmap(plt.get_cmap("seismic", 20))
# 绘制三维散点,各个点颜色使用color列表中的值,形状为"."
im = ax.scatter(x, y, z,s=200,c=color,marker='.')
# 2.1 增加侧边colorbar
# 设置侧边colorbar,colorbar上显示的值使用lambda方程设置
fig.colorbar(im, format=matplotlib.ticker.FuncFormatter(lambda x,pos:int(x*(max_v-min_v)+min_v)))
# 2.2 增加坐标轴标签
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
# 2.3显示
plt.show()

结果如图所示:

注意:使用的matplotlib包版本为3.5

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/689424.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号