2016-03-24 11 views
1

Bir histogram yapmak için matplotlib kullanıyorum.Python'da Histogram grafiği

Temel olarak, kutuların yanı sıra değerlerini manuel olarak ayarlamanın herhangi bir yolu olup olmadığını ve yine de grafiğin matplotlin histogramım haline getirilmiş gibi bir sonuç alıp almadığını merak ediyorum. Aşağıda benim kutuları ve onların karşılık gelen değerleri.

0-7  0.9375 
7-13 0.9490740741 
13-18 0.8285714286 
18-28 0.880952381 
28-37 0.92164903 
37-48 0.9345357019 
48-112 0.9400368773 

Bu

ı Bu, yukarıdaki kodun çubuk grafiği neye benzediği

import matplotlib.pyplot as plt 
plt.bar(maxlist, mean) 
plt.show() 

maxlist = [7.0, 13.0, 18.0, 28.0, 37.0, 48.0, 112.0] 
mean = [0.9375, 0.94907407407777766, 0.82857142858571442, 0.88095238094999995, 0.92164902996666676, 0.93453570191250002, 0.94003687729000018] 

uygulayan çubuk kodudur. histwithoutwidth

Ayrıca genişlik parametresiyle oynamayı denedim, ancak çubuk histogramda gerçekleşmeyen bu durumda çakışıyor gibi görünüyor. herhangi örtüşme olmadan

enter image description here

aşağıda gösterildiği gibi İstediğim şey histograma gibi görünmek için çubuk grafiğidir

import matplotlib.pyplot as plt 
plt.bar(maxlist, mean,width = 6) 
plt.show() 

. Herhangi bir fikri olan herkes bunu python/ipython defterinde nasıl yapar. @ Roadrunner66 bağlanmış belgelerine

+0

böylece çubukların eşit genişlikte olmasını istiyorsunuz, ancak bunların tabanı eşit değil mi? ya da boşlukları doldurmak için daha geniş olması gereken barlardan mı? – maxymoo

+0

Kutuları, bir listeyi geçerek çok özel kutular vermenizi sağlar. Ekran etkilenmez. Bunun için mükemmel belgelere "histtype", "align" ve "rwidth" bakın: http://matplotlib.org/api/pyplot_api.html. – roadrunner66

+0

@maxymoo Birbirleriyle örtüşmelerine gerek kalmadan eşit uzunlukta çubuklar istiyorum. Binek aralığı her zaman değiştiği için baz eşit uzunlukta olamaz. Umarım bu, şüphenizi açıklığa kavuşturur. – piyush

cevap

3

enter image description here,

matplotlib.pyplot.bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs)

dikdörtgenler bir bar arsa sınırlanmış olun:

left, left + width, bottom,

bottom + height (solda , sağ, alt ve üst kenarlar)

bar'a iletilen ilk parametre aslında "bölme" tablonuzun sol kenarıdır. left olarak geçtiğiniz maxlist, aslında her şeyi atıp genişliklerin garip olmasına neden olan kutularınızın sağ kenarıdır.

import matplotlib.pyplot as plt 
import numpy as np 
x1=[0,7,13,18,28,37,48] #left edge 
x2=x1[1::]+[112] #right edge 
y=[0.9375, 0.94907407407777766, 0.82857142858571442, 0.88095238094999995, 0.92164902996666676, 0.93453570191250002, 0.94003687729000018] 
w=np.array(x2)-np.array(x1) #variable width, can set this as a scalar also 
plt.plot(x1,y,width=w) 
plt.show() 

Bar chart with variable bin widths

çubuk genişliği, sol ve sağ kenarları, x1 ve x2 arasındaki mesafelerin temsilidir. Sabit genişlikler istiyorsanız, width=w_scalar'u plt.bar()'a aktarın; burada w_scalar sabit kutu genişliğinizdir. Barların daha uzakta olmasını isterseniz, width'u daha küçük yapın.