與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