2016-12-11 2 views
1

enter image description hereКак построить эту цифру?

Я хотел бы построить что-то вроде выше, используя python. Есть одна особенность, которая мне нравится:

Эта фигура разделена на несколько прямоугольников разного цвета (и числа). единственный приблизительный сюжет, который я могу представить, - это разброс. Но в плане рассеяния присутствуют некоторые точки, а не прямоугольники.

Может ли кто-нибудь мне помочь?

ответ

1

Ответ, вероятно, зависит от того, какие данные вы хотите отображать. Есть несколько способов получения такой сюжет,

  1. Использование Rectangle с с заданными вершинами
  2. Использование imshow массива на равном расстоянии сетки
  3. Использование pcolormesh массива на неравные интервалы сетки

Предполагая, что вы хотите построить гистограмму и выбрать третий вариант, возможное решение может выглядеть примерно так (на основе histogram2d)

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

Спасибо за этот идеальный ответ! – insomnia

Смежные вопросы