Python:3D散射丢失颜色贴图

2024-09-28 03:18:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用多组数据创建一个三维散点图,并对整个图形使用彩色地图。代码如下:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

for R in [range(0,10), range(5,15), range(10,20)]:
  data = [np.array(R), np.array(range(10)), np.array(range(10))]
  AX = ax.scatter(*data, c=data[0], vmin=0, vmax=20, cmap=plt.cm.jet)
  def forceUpdate(event): AX.changed()
  fig.canvas.mpl_connect('draw_event', forceUpdate)

plt.colorbar(AX)

这很好用,但是当我保存它或旋转绘图时,第一个和第二个散射点上的颜色就会变成蓝色。在

3D scatter loses color map info on all but the last data set.

强制更新是通过保留颜色来工作的,但只保留最后绘制的散点图。我尝试创建一个循环来更新所有散点图,但得到的结果与上面相同:

^{pr2}$

你知道我如何确保所有的散射都被更新,这样颜色不会消失吗?在

谢谢!在


Tags: 数据importevent图形data颜色npfig
1条回答
网友
1楼 · 发布于 2024-09-28 03:18:45

修改了您的代码,使其可以执行以下操作:

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from mpl_toolkits.mplot3d import Axes3D
>>> AX = \[\]
>>> fig = plt.figure()
>>> ax = fig.add_subplot(111, projection='3d')
>>> for R in \[range(0,10), range(5,15), range(10,20)\]:
...   data = \[np.array(R), np.array(range(10)), np.array(range(10))\]
...   AX = ax.scatter(*data, c=data\[0\], vmin=0, vmax=20, cmap=plt.cm.jet)
...   def forceUpdate(event): AX.changed()
...   fig.canvas.mpl_connect('draw_event', forceUpdate)
... 
9
10
11
>>> plt.colorbar(AX)
<matplotlib.colorbar.Colorbar instance at 0x36265a8>
>>> plt.show()

然后我得到: Result of save after rotate

所以上面的代码是有效的。如果你现有的代码不是这样,我建议你尝试上面的代码,如果这不起作用,看看你正在使用的代码版本,如果它确实有效,那么你将不得不调查它与你的实际代码(而不是你的示例代码)之间的差异。在

相关问题 更多 >

    热门问题