2016-07-20 26 views
0

-Code ist:Python Matplotlib - imshow aber mit Hexagone

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import colors 

example_data = np.random.randint(4, size=(40,44)) 
cmap = colors.ListedColormap(['black', 'green', 'red', 'blue']) 
bounds = [0,1,2,3,4] 
norm = colors.BoundaryNorm(bounds, cmap.N) 

img = plt.imshow(example_data, interpolation = 'nearest', origin = 'lower', 
cmap = cmap, norm = norm) 

Was mich grob bekommt, was ich will. Was ich suche ist, wenn es eine Möglichkeit gibt, die Form jeder Fliese sechseckig statt quadratisch zu gestalten? Ich denke, imshow könnte nicht der richtige Weg sein, aber wenn es eine Möglichkeit gibt, die Standardfliese zu ändern, wäre es gut.

Danke.

+0

Und wie würden Sie Ihre hexagonale Kacheln aus dem Quadrat Fliesen (Array) Sie sieht definieren haben? Das klingt viel zu spezifisch für eine eingebaute Funktion. Ich könnte falsch liegen, aber ich denke, Sie müssen Ihre eigene Plot-Routine erstellen ... – Julien

Antwort

-1

Sie ein Streudiagramm mit farbigen Hexagone verwenden könnte,

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import colors 

nx = 40 
ny = 44 
example_data = np.random.randint(4, size=(nx,ny)) 
cmap = colors.ListedColormap(['black', 'green', 'red', 'blue']) 
bounds = [0,1,2,3,4] 
norm = colors.BoundaryNorm(bounds, cmap.N) 

x = np.linspace(0, 1, nx) 
y = np.linspace(0, 1, ny) 
X, Y = np.meshgrid(x, y) 

img = plt.scatter(X.ravel(),Y.ravel(),c=example_data.ravel(), cmap=cmap, norm=norm, s=360, marker=(6, 0), alpha=0.4) 

plt.colorbar(img) 
plt.show() 

, die wie,

enter image description here