2016-04-14 12 views
2

X-ekseninin tarih olduğu ve y ekseninin zaman olduğu python'da matplotlib'de oluşturulmuş bir dağılım grafiği var. Y eksenime biraz dolgu eklemek istiyorum, bu sayede puanlar en üstte ve altta kesilmiyor. ax.ylim([x,y])'u en küçük değerden biraz daha küçük ve en büyük değerden biraz daha büyük olacak şekilde ayarlamayı duydum ama bu, negatif zaman ya da 25:00 gibi bir şey olmadığı için zamanla mümkün değil.Matplotlib'de zaman eksenine dolgu ekleme

Bu görüntü artık neye benzediği: enter image description here

sen kesilir üstünde ve altında puan görebileceğiniz gibi.

Herhangi bir yardım çok takdir edilecektir! İşte

+0

bu çalışıyor mu http://stackoverflow.com/questions/2969867/how-do-i-add-space-between-the-ticklabels-and-the-axes-in-matplotlib – Ben

+0

Veya http://stackoverflow.com/questions/6406368/matplotlib-move-x-axis-label-aşağı-değil-x-axis-ticks – Ben

+0

Etiketleri kendiniz yazmanız mümkündür ve bu sizin istediğiniz şeyi yapar, ancak bu arsalarınızı daha az kalabalık, daha tersini (arsa için daha az yer olacak bir ped verirseniz) bırakmaz. Bunun için de çözüm istiyor musun? – armatita

cevap

2

yazabilirsiniz nasıl sizin orada aptal değerlere sahip riske atmadan etiketler (ve verilere ekleme sınırları) nasıl:

import matplotlib.pyplot as plt 
import numpy as np 

x = np.random.randint(2004,2017,500) 
y =np.clip(np.random.normal(13,7,500),0,24) 

plt.scatter(x,y) 
plt.xticks(range(2004,2017,3),[str(i) for i in range(2004,2017,3)],rotation=45) 
plt.yticks(range(0,24,3),[str(i)+':00' for i in range(0,24,3)]) 

plt.xlim(2002,2019) 
plt.ylim(-3,28) 
plt.show() 

, sonucudur:

Controlling the labels to have a pad effect

+0

Yanıt için teşekkürler! Yönteminizi kullanarak boşluk çalışır ancak değerlerim kaybolur. Değerlerim için datetime.datetime sınıflarını kullanıyorum olabilir mi? 'tarih = datetime.datetime (int (tarih: [0: 4]), int (tarih [5: 7]), int (tarih [08:10])) \t \t \t dateList.append (tarih) \t \t \t timeThing = datetime.datetime (2016,1,1, saat, dakika) (= 'r' c dateList, timeList) \t \t \t timeList.append (timeThing) \t plt.scatter \t plt.yticks (aralık (0,24,3), [str (i) + ': 00' i aralık için (0,24,3)]) \t plt.ylim (-3,28) ' –

+0

@ConnerLeverett Possibly. Aralığı (0,24,3) ile 'yticks' tanımladığınız satırda, tarihleri ​​aralık yerine yinelenebilir hale getirmeyi deneyin. Ayrıca kodunuzu (ithalat dahil) sorunuza da koyun. Bir yorumda okumak zor. – armatita