对于一个项目,我正在制作一些3D散点图,其下面有三个相应的投影.我使用不同的颜色来表示第四个参数.首先,我使用某种颜色绘制数据,然后使用不同的颜色绘制其他数据,以便最终订单可以让我看到我想要的所有内容:

在一开始这个工作正常,但是当我尝试用略有不同的数据做同样的事情时,颜色搞砸了.投影中显示的颜色是正确的,但3D图中缺少一些颜色,因此它们不再匹配:

当我以有趣的方式旋转3D绘图时,颜色会被恢复,我可以看到它们应该是:

但是,我不希望以有趣的方式旋转3D绘图,因为轴变得混乱并且不可能像这样正确地读取它.
我在这里找到了一个问题的解决方案: 在matplotlib中绘制三维散点图.它基本上说我应该用ax.plot(X,Y,'o')替换我的ax.scatter(X,Y).当我这样做时,颜色会以它们应该的方式显示出来,但是这样的情节更加混乱和丑陋.基本上我只想用散点图来做到这一点.
有谁知道如何解决这个问题?
这是我的代码的最小示例,仅适用于两种颜色:
from mpl_toolkits.mplot3d import art3d
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import gridspec
art3d.zalpha = lambda *args:args[0]
numcols = 20
percentage = 50
def load(Td, pc):
T = np.load(str(pc) + 'pctTemperaturesTd=' + str(Td) + '.npy')
D = np.load(str(pc) + 'pctDensitiesTd=' + str(Td) + '.npy')
CD = np.load(str(pc) + 'pctColDensitiesTd=' + str(Td) + '.npy')
return T, D, CD
def colors(ax):
colors = np.zeros((numcols, 4))
cm …Run Code Online (Sandbox Code Playgroud)