2016-12-11 23 views
1

enter image description hereWie zeichnet man diese Zahl?

Ich möchte etwas wie obige Handlung mit Python plotten. Es gibt eine Eigenschaft, die ich mag:

Die Figur ist in mehrere Rechtecke mit unterschiedlicher Farbe (und Anzahl) unterteilt. die einzige ungefähre Handlung, die ich denken kann, ist Streudiagramm. Aber ein Streudiagramm zeigt einige Punkte, keine Rechtecke.

Kann mir jemand helfen?

Antwort

1

Die Antwort hängt wahrscheinlich davon ab, welche Art von Daten Sie zeigen möchten. Es gibt mehrere Möglichkeiten, eine solche Handlung zu erzeugen,

  1. Verwendung Rectangle s mit vorgegebenen Eckpunkten
  2. Verwendung imshow eines Arrays auf einem gleichmäßig beabstandeten Raster
  3. Verwendung pcolormesh eines Arrays auf einem ungleich beabstandeten Gitter

Angenommen, Sie möchten ein Histogramm plotten und die dritte Option auswählen, kann eine mögliche Lösung in etwa so aussehen (basierend auf einem)

import matplotlib.pyplot as plt 
import numpy as np 

xedges = [0, 1, 1.5, 3, 5] 
yedges = [0, 2, 3, 4, 6] 

# produce histogram 
x = np.random.normal(2.5, 1, 100) 
y = np.random.normal(1.5, 1, 100) 
H, xedges, yedges = np.histogram2d(y, x, bins=(xedges, yedges)) 

fig=plt.figure() 
ax = fig.add_subplot(111) 
ax.set_title('Something') 
X, Y = np.meshgrid(xedges, yedges) 
im = ax.pcolormesh(X, Y, H) 

# label the histogram bins 
for i in range(len(yedges)-1): 
    for j in range(len(xedges)-1): 
     ax.text((xedges[j+1]-xedges[j])/2.+xedges[j] , 
       (yedges[i+1]-yedges[i])/2.+yedges[i] , 
       str(H[i, j]) , ha="center", va="center", color="w", fontweight="bold") 
plt.colorbar(im)   

plt.show() 

enter image description here

+0

Vielen Dank für diese perfekte Antwort! – insomnia