2012-04-23 49 views
14

Để có được quầy bar, nơi trục x là số ngày, tôi đang làm một cái gì đó như thế này:matplotlib biểu đồ thanh trung với ngày

import numpy as np 
import matplotlib.pyplot as plt 
import datetime 

x = [datetime.datetime(2010, 12, 1, 0, 0), 
    datetime.datetime(2011, 1, 1, 0, 0), 
    datetime.datetime(2011, 5, 1, 1, 0)] 
y = [4, 9, 2] 

ax = plt.subplot(111) 
barWidth=20 
ax.bar(x, y, width=barWidth) 
ax.xaxis_date() 

plt.show() 

enter image description here

Tuy nhiên, âm mưu này không tập trung vào x. Nếu trước đó đã sử dụng ax.bar (x-barWidth/2., y, width = barWidth) để lấy thanh, được căn giữa x. Có cách nào để nhận được giống nhau khi các giá trị trục x là ngày không?

Trả lời

31

Tôi nghĩ bạn muốn align='center' từ khóa cho phương thức bar.

Những thay đổi nhỏ để dụ của bạn:

import numpy as np 
import matplotlib.pyplot as plt 
import datetime 

x = [datetime.datetime(2010, 12, 1, 0, 0), 
    datetime.datetime(2011, 1, 1, 0, 0), 
    datetime.datetime(2011, 5, 1, 1, 0)] 
y = [4, 9, 2] 

ax = plt.subplot(111) 
barWidth=20 
ax.bar(x, y, width=barWidth, align='center') #< added align keyword 
ax.xaxis_date() 

plt.savefig('baralign.png') 
plt.show() 

dẫn đến sự hình sau:

enter image description here

Đây là một khá thẳng về phía trước trả lời nếu bạn biết nơi để tìm. matplotlib có tài liệu mở rộng và cho mỗi phương pháp vẽ sơ đồ, nhà phát triển cung cấp a detailed description of the keyword arguments.

+0

Hoàn hảo. Bằng cách nào đó tôi đã bỏ lỡ nó. Cảm ơn rất nhiều. – imsc

Các vấn đề liên quan