2017-03-01 44 views
5

Irytujące dziwny problem i nie byłem w stanie znaleźć rozwiązanie na tej stronie jeszcze (choć kwestia została wysunięta)nie można uzyskać histogramu pokazać rozdzielonych pojemników z pionowych linii

Próbuję zrobić histogram gdzie pojemniki mają "styl pręta", w którym pionowe linie oddzielają każdy pojemnik, ale bez względu na to, co zmieniam konstruktor histtypy, otrzymam histogram wypełniony krokami.

Oto mój kod. Uwaga używam jupyter zainstalowany przez anakonda notebook z wersji Pythona 2.7.6

import numpy as np 
import matplotlib.pyplot as plt 

x = np.random.rand((100)) 
bins = np.linspace(0, 2, 40) 
plt.title('Relative Amplitude',fontsize=30) 
plt.xlabel('Random Histogram') 
plt.ylabel('Frequency',fontsize=30) 
plt.hist(x, bins, alpha=0.5, histtype='bar') 

plt.legend(loc='upper right',fontsize=30) 
plt.xticks(fontsize = 20) 
plt.yticks(fontsize = 20) 
plt.show() 

to wszystko i dostaję krok wypełniony schemat bez pionowych linii oddzielających pasków. Co jest denerwujące, to że nie miałem tego problemu jakiś czas temu, coś wyraźnie się zmieniło i nie wiem co. Próbowałem też histype = 'barstacked'. Dziękuję uprzejmie za pomoc

enter image description here

+1

Czy jesteś za pomocą dowolnego stylu matplotlib? Ponieważ nie mogę odtworzyć twojego problemu. –

+0

Importuję matplotlib do mojego notatnika. Próbowałem również za pomocą polecenia% matplotlib. – Canuck

+0

Czy uruchomiłeś przykład w notebooku jupyter? – Canuck

Odpowiedz

9

pośrednictwem swojego przykład:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.random.rand((100)) 
bins = np.linspace(0, 2, 40) 
plt.title('Relative Amplitude',fontsize=30) 
plt.xlabel('Random Histogram') 
plt.ylabel('Frequency',fontsize=30) 
plt.hist(x, bins, alpha=0.5, histtype='bar', ec='black') 

plt.legend(loc='upper right',fontsize=30) 
plt.xticks(fontsize = 20) 
plt.yticks(fontsize = 20) 
plt.show() 

która produkuje następujący obraz:

enter image description here

+1

Dzięki Nathan! Nadal nie jestem pewien, dlaczego muszę dodać to polecenie teraz i zanim nie było potrzeby, ale jeśli działa, działa ... – Canuck

+2

Kluczową różnicą jest użycie argumentu słowa kluczowego "ec". To jest skrót od 'edgecolor'. W dokumentacji dla 'plt.hist' mówi, że oprócz wszystkich wymienionych argumentów słów kluczowych,' plt.hist' * również * pobiera argumenty słów kluczowych dla inicjatora 'Patch'. 'edgecolor' jest jednym z tych argumentów słów kluczowych. Dlatego nie jest to wyraźnie wymienione w dokumentacji dla 'plt.hist'. Wszystkie paski w wątku są indywidualnym obiektem 'Patch', więc mówisz, że chcesz, aby wszystkie paski były rysowane z czarnym konturem (lub' edgecolor' w żargonie matplotlib). – ngoldbaum