与this question相关,我需要一个三维散点图,每个点都有指定的颜色。该问题中发布的示例适用于我的系统,但在第一次重绘之后(例如保存后或如果我旋转图像),颜色似乎丢失,即所有点都以常规深度信息以蓝色绘制。请参阅下面的修改示例。Matplotlib重绘后丢失三维散点图颜色
我的系统是Python 2.6.7,在mac 10.8.0上从macports安装了matplotlib 1.1.0。我使用MacOSX后端。
有谁知道如何规避这个问题?
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Create Map
cm = plt.get_cmap("RdYlGn")
x = np.random.rand(30)
y = np.random.rand(30)
z = np.random.rand(30)
col = np.arange(30)
fig = plt.figure()
ax3D = fig.add_subplot(111, projection='3d')
ax3D.scatter(x, y, z, s=30, c=col, marker='o', cmap=cm)
plt.savefig('image1.png')
plt.savefig('image2.png')
这里有两个图像,我得到:
嗯,在窗户上。如果我注释掉'col = np.arange(30) '这一行,这两个地块都是相同的。不能解释为什么。 'pyplot'是一个有状态的模块,我认为不关闭旧模块就开启一个新数字并不明智。如果一直只有一个数字开放,我认为可以防止这种影响。 –
我只注意到代码实际上使用了两个数字。不过,这不是问题的原因。我从示例代码中删除了第一个数字,问题依然存在。感谢您指出该问题也存在于Windows上。在我看来,这是一种错误。 –
就像未来访问者的笔记一样,这似乎是在MatPlotLib 1.2.0中修复:) – Poik