2013-07-02 41 views
8

Tôi sử dụng autofmt_xdate để vẽ nhãn trục x dài theo cách dễ đọc. Vấn đề là, khi tôi muốn kết hợp các subplots khác nhau, ghi nhãn x của các subplots khác biến mất, mà tôi không đánh giá cao cho subplot ngoài cùng bên trái trong hình bên dưới (hai hàng cao). Có cách nào để ngăn không cho autofmt_xdate làm nguội các nhãn trục x khác không? Hoặc có cách nào khác để xoay nhãn không? Như bạn có thể thấy tôi đã thử nghiệm với xticks và "xoay" là tốt, nhưng kết quả không thỏa mãn vì các nhãn được xoay quanh tâm của chúng, dẫn đến việc dán nhãn lộn xộn.autofmt_xdate xóa nhãn trục x của tất cả các ô con

Script sản xuất cốt truyện dưới đây:

from matplotlib import pyplot as plt 
from numpy import arange 
import numpy 
from matplotlib import rc 

rc("figure",figsize=(15,10)) 
#rc('figure.subplot',bottom=0.1,hspace=0.1) 
rc("legend",fontsize=16) 
fig = plt.figure() 


Test_Data = numpy.random.normal(size=20) 

fig = plt.figure() 
Dimension = (2,3) 
plt.subplot2grid(Dimension, (0,0),rowspan=2) 
plt.plot(Test_Data) 
plt.subplot2grid(Dimension, (0,1),colspan=2) 
for i,j in zip(Test_Data,arange(len(Test_Data))): 
    plt.bar(i,j) 
plt.legend(arange(len(Test_Data))) 
plt.subplot2grid(Dimension, (1,1),colspan=2) 
xticks = [r"%s (%i)" % (a,b) for a,b in zip(Test_Data,Test_Data)] 
plt.xticks(arange(len(Test_Data)),xticks) 
fig.autofmt_xdate() 
plt.ylabel(r'$Some Latex Formula/Divided by some Latex Formula$',fontsize=14) 
plt.plot(Test_Data) 
#plt.setp(plt.xticks()[1],rotation=30) 
plt.tight_layout() 
#plt.show() 

Figure created by script

Trả lời

6

Đây thực sự là một tính năng của phương pháp autofmt_xdate. Từ tài liệu của phương pháp autofmt_xdate:

Dấu tick ngày thường chồng lên nhau, vì vậy rất hữu ích để xoay và căn chỉnh chúng. Ngoài ra, một trường hợp sử dụng phổ biến là một số các subplots với xaxes chia sẻ, nơi trục x là dữ liệu ngày tháng. Các ticklabels thường dài, và nó giúp để xoay chúng trên subplot dưới cùng và tắt chúng trên các subplots khác, cũng như tắt xlabels.

Nếu bạn muốn xoay xticklabels chỉ các âm mưu phụ dưới bên phải, sử dụng

plt.setp(plt.xticks()[1], rotation=30, ha='right') # ha is the same as horizontalalignment 

Thao tác này quay ticklabels 30 độ và phải sắp xếp chúng (cùng kết quả như khi sử dụng autofmt_xdate) cho góc dưới bên phải subplot, để lại hai subplots khác không thay đổi.

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