Hãy nhìn vào biểu đồ dưới đây: Matplotlib nhãn cho thấy x-đánh dấu chồng chéo bất chấp những nỗ lực tốt nhất
Đó là một âm mưu phụ của con số lớn hơn này:
tôi thấy hai vấn đề với nó. Đầu tiên, các nhãn trục x chồng lên nhau (đây là vấn đề chính của tôi). Thứ hai. vị trí của các đường lưới nhỏ trục x có vẻ hơi sôi nổi. Ở bên trái của biểu đồ, chúng trông đúng cách. Nhưng ở bên phải, chúng dường như đang dồn vào các đường lưới chính ... như thể các vị trí đường lưới chính không phải là bội số thích hợp của các vị trí đánh dấu nhỏ.
Thiết lập của tôi là tôi có DataFrame được gọi là df
trong đó có DatetimeIndex
trên các hàng và cột được gọi là value
có chứa phao. Tôi có thể cung cấp ví dụ về nội dung df
trong một ý chính nếu cần. Một tá hoặc nhiều dòng df
nằm ở cuối bài đăng này để tham khảo.
Dưới đây là đoạn code mà tạo ra con số:
now = dt.datetime.now()
fig, axes = plt.subplots(2, 2, figsize=(15, 8), dpi=200)
for i, d in enumerate([360, 30, 7, 1]):
ax = axes.flatten()[i]
earlycut = now - relativedelta(days=d)
data = df.loc[df.index>=earlycut, :]
ax.plot(data.index, data['value'])
ax.xaxis_date()
ax.get_xaxis().set_minor_locator(mpl.ticker.AutoMinorLocator())
ax.get_yaxis().set_minor_locator(mpl.ticker.AutoMinorLocator())
ax.grid(b=True, which='major', color='w', linewidth=1.5)
ax.grid(b=True, which='minor', color='w', linewidth=0.75)
lựa chọn tốt nhất của tôi ở đây để có được những nhãn trục x để ngăn chặn chồng chéo lẫn nhau (trong mỗi trong bốn ô phụ) là gì? Ngoài ra, riêng biệt (nhưng ít khẩn trương hơn), có chuyện gì với vấn đề đánh dấu nhỏ ở tiểu điểm trên cùng bên trái?
Tôi ở trên Pandas 0.13.1, numpy 1.8.0 và matplotlib 1.4.x.
Dưới đây là một đoạn nhỏ của df
để tham khảo:
id scale tempseries_id value
timestamp
2014-11-02 14:45:10.302204+00:00 7564 F 1 68.0000
2014-11-02 14:25:13.532391+00:00 7563 F 1 68.5616
2014-11-02 14:15:12.102229+00:00 7562 F 1 68.9000
2014-11-02 14:05:13.252371+00:00 7561 F 1 69.0116
2014-11-02 13:55:11.792191+00:00 7560 F 1 68.7866
2014-11-02 13:45:10.782227+00:00 7559 F 1 68.6750
2014-11-02 13:35:10.972248+00:00 7558 F 1 68.4500
2014-11-02 13:25:10.362213+00:00 7557 F 1 68.1116
2014-11-02 13:15:10.822247+00:00 7556 F 1 68.2250
2014-11-02 13:05:10.102200+00:00 7555 F 1 68.5616
2014-11-02 12:55:10.292217+00:00 7554 F 1 69.0116
2014-11-02 12:45:10.382226+00:00 7553 F 1 69.3500
2014-11-02 12:35:10.642245+00:00 7552 F 1 69.2366
2014-11-02 12:25:12.642255+00:00 7551 F 1 69.1250
2014-11-02 12:15:11.122382+00:00 7550 F 1 68.7866
2014-11-02 12:05:11.332224+00:00 7549 F 1 68.5616
2014-11-02 11:55:11.662311+00:00 7548 F 1 68.2250
2014-11-02 11:45:11.122193+00:00 7547 F 1 68.4500
2014-11-02 11:35:11.162271+00:00 7546 F 1 68.7866
2014-11-02 11:25:12.102211+00:00 7545 F 1 69.2366
2014-11-02 11:15:10.422226+00:00 7544 F 1 69.4616
2014-11-02 11:05:11.412216+00:00 7543 F 1 69.3500
2014-11-02 10:55:10.772212+00:00 7542 F 1 69.1250
2014-11-02 10:45:11.332220+00:00 7541 F 1 68.7866
2014-11-02 10:35:11.332232+00:00 7540 F 1 68.5616
2014-11-02 10:25:11.202411+00:00 7539 F 1 68.2250
2014-11-02 10:15:11.932326+00:00 7538 F 1 68.5616
2014-11-02 10:05:10.922229+00:00 7537 F 1 68.9000
2014-11-02 09:55:11.602357+00:00 7536 F 1 69.3500
Edit: Đang cố gắng fig.autofmt_xdate()
: Tôi không nghĩ rằng đây sẽ làm các trick. Điều này dường như sử dụng các nhãn x-tick giống nhau cho cả hai biểu đồ ở bên trái và cũng cho cả hai biểu đồ ở bên phải. Dữ liệu của tôi không chính xác. Xin vui lòng xem các đầu ra có vấn đề dưới đây:
Giải pháp này có hoạt động đối với một số điểm phụ (giả sử mảng 2x2) với các trục thời gian ngày khác nhau trên tất cả không? – 8one6
(Tôi đã cố gắng thực hiện giải pháp này, nhưng nó chỉ hiển thị nhãn đánh dấu trên hàng dưới cùng của các ô phụ và những nhãn không tương ứng với hàng đầu của các vị trí con.) – 8one6