我正在创建一个包含多组数据的 3D 散点图,并为整个图形使用颜色图。代码如下所示:
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)
这很好用,但只要我保存它或旋转绘图,第一个和第二个散点上的颜色就会变成蓝色。
强制更新通过保留颜色但仅在绘制的最后一个散点图上起作用。我尝试制作一个更新所有散点图的循环,但我得到与上面相同的结果:
AX = []
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.append(ax.scatter(*data, c=data[0], vmin=0, vmax=20, cmap=plt.cm.jet))
for i in AX:
def forceUpdate(event): i.changed()
fig.canvas.mpl_connect('draw_event', forceUpdate)
知道如何确保所有散点图都被更新以使颜色不会消失吗?
谢谢!