为了账号安全,请及时绑定邮箱和手机立即绑定

根据条件更改 3D 散点图中的标记/颜色

根据条件更改 3D 散点图中的标记/颜色

隔江千里 2021-12-17 16:57:17
我想用 matplotlib 在 Python 中做一个 3D 散点图,例如点 > 5 显示为红色,其余为蓝色。问题是我仍然用标记/颜色绘制了所有值,我也知道为什么会这样,但我对 Python 的思考不够深入,无法解决这个问题。X = [3, 5, 6, 7,]Y = [2, 4, 5, 9,]Z = [1, 2, 6, 7,]#ZP is for differentiate between ploted values and "check if" valuesZP = Zfor ZP in ZP:    if ZP > 5:        ax.scatter(X, Y, Z, c='r', marker='o')    else:        ax.scatter(X, Y, Z, c='b', marker='x')plt.show()也许解决方案也是我还没有学到的东西,但在我看来,让它发挥作用应该不难。
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您可以使用 NumPy 索引。由于 NumPy 已经是 的依赖项matplotlib,您可以通过将列表转换为数组来使用数组索引。


import matplotlib.pyplot as plt

import numpy as np

from mpl_toolkits.mplot3d import Axes3D 


fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')


X = np.array([3, 5, 6, 7])

Y = np.array([2, 4, 5, 9])

Z = np.array([1, 2, 6, 7])


ax.scatter(X[Z>5], Y[Z>5], Z[Z>5], s=40, c='r', marker='o')

ax.scatter(X[Z<=5], Y[Z<=5], Z[Z<=5], s=40, c='b', marker='x')


plt.show()

//img1.sycdn.imooc.com//61bc510f0001b71307010465.jpg

查看完整回答
反对 回复 2021-12-17
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

为每个条件创建单独的点:


X1,Y1,Z1 = zip(*[(x,y,z) for x,y,z in zip(X,Y,Z) if z<=5])

X2,Y2,Z2 = zip(*[(x,y,z) for x,y,z in zip(X,Y,Z) if z>5])


ax.scatter(X1, Y1, Z1, c='b', marker='x')   

ax.scatter(X2, Y2, Z2, c='r', marker='o')


查看完整回答
反对 回复 2021-12-17
  • 2 回答
  • 0 关注
  • 342 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号