我對Python非常新,甚至我做了相當深入和長期的研究,我想我需要在社區中的確認,然後在github上打開一個案例。需要一個庫缺陷的確認
我正在繪製兩個"hinton plots"但我使用顏色範圍來表示矩陣值。
由於某種原因使用子圖繪製背景在最後一個子圖第一個陰謀與第一個mymap
顏色(在我的情況是藍色)。如果在任何情況下都覆蓋set_facecolor = 'gray'
(即使我在繪圖後設置背景顏色)。此外,我發現只有當matrix
值大於0時,此bug纔會累積。
請參閱下面的圖片(和圖片說明)和代碼。
第二個子圖上第一張圖片的背景爲藍色。 第三個子圖添加了無數據,現在它是藍色的,第二個子圖的第一個平方不是。
對於第一畫面效果變化6個行:fig, (axe_1, axe_2) = plt.subplots(1,2)
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
fig, (axe_1, axe_2, axe_3) = plt.subplots(1, 3)
my_min, my_max = (0, 10)
step = 1
mymap = mpl.colors.LinearSegmentedColormap.from_list("my list", ['blue','red'])
levels = range(my_min, my_max+step, step)
matrix = [None, None]
matrix[0] = np.asanyarray([[0, 1, 2], [3, 0, 5], [6, 7, 0]])
matrix[1] = np.asanyarray([[0, 9, 8], [7, 0, 6], [5, 4, 0]])
for iter, item in enumerate([axe_1, axe_2]):
item.patch.set_facecolor('gray')
item.set_aspect('equal', 'box')
item.xaxis.set_major_locator(plt.NullLocator())
item.yaxis.set_major_locator(plt.NullLocator())
Z = [[0, 0], [0, 0]]
CS3 = plt.contourf(Z, levels, cmap=mymap)
for (x, y), z in np.ndenumerate(matrix[iter]):
b = (float(z)-my_min)/(my_max-my_min)
g = 0
r = 1-b
rect = plt.Rectangle([y, x], 0.9, 0.9, facecolor=(r, g, b), edgecolor="black")
item.add_patch(rect)
item.autoscale_view()
plt.show()
如果我沒有做任何愚蠢的錯誤,你會確認這是一個錯誤,我會打開GitHub上的問題。
你能更清楚地知道你的問題是什麼嗎? –
更新的問題,我希望現在更清楚。 – arbulgazar