2013-04-02 48 views
10

Tôi đã tạo ra các thiết lập sau đây subplots sử dụng chức năng sau:loại bỏ chồng chéo dấu tick vào âm mưu phụ trong matplotlib

def create31fig(size,xlabel,ylabel,title=None): 
    fig = plt.figure(figsize=(size,size)) 
    ax1 = fig.add_subplot(311) 
    ax2 = fig.add_subplot(312) 
    ax3 = fig.add_subplot(313) 
    plt.subplots_adjust(hspace=0.001) 
    plt.subplots_adjust(wspace=0.001) 
    ax1.set_xticklabels([]) 
    ax2.set_xticklabels([]) 
    xticklabels = ax1.get_xticklabels()+ ax2.get_xticklabels() 
    plt.setp(xticklabels, visible=False) 
    ax1.set_title(title) 
    ax2.set_ylabel(ylabel) 
    ax3.set_xlabel(xlabel) 
    return ax1,ax2,ax3 

Làm thế nào để chắc chắn rằng các đỉnh và đáy của âm mưu phụ (312) không trùng với hàng xóm của họ? Cảm ơn.

Subplot

+2

Không biết liệu nó có cần thiết cho cấu hình này hay không, nhưng hãy xem [thread này] (http://stackoverflow.com/questions/2418125/matplotlib-subplots-adjust-hspace-so-titles -and-xlabels-dont-overlap). Nếu không, điều dễ nhất cần làm là xóa một trong các nhãn đánh dấu chồng chéo: 'ax1.get_yticklabels() [0] .set_visible (False)' –

Trả lời

15

Trong mô-đun ticker có một lớp được gọi là MaxNLocator rằng có thể mất một kwarg mận.
Sử dụng mà bạn có thể loại bỏ các đánh dấu trên cùng của thứ 2 và thứ 3 subplots:

import matplotlib.pyplot as plt 
from matplotlib.ticker import MaxNLocator # added 

def create31fig(size,xlabel,ylabel,title=None): 
    fig = plt.figure(figsize=(size,size)) 
    ax1 = fig.add_subplot(311) 
    ax2 = fig.add_subplot(312) 
    ax3 = fig.add_subplot(313) 
    plt.subplots_adjust(hspace=0.001) 
    plt.subplots_adjust(wspace=0.001) 
    ax1.set_xticklabels([]) 
    ax2.set_xticklabels([]) 
    xticklabels = ax1.get_xticklabels() + ax2.get_xticklabels() 
    plt.setp(xticklabels, visible=False) 
    ax1.set_title(title) 
    nbins = len(ax1.get_xticklabels()) # added 
    ax2.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper')) # added 
    ax2.set_ylabel(ylabel) 
    ax3.yaxis.set_major_locator(MaxNLocator(nbins=nbins,prune='upper')) # added 
    ax3.set_xlabel(xlabel) 
    return ax1,ax2,ax3 

create31fig(5,'xlabel','ylabel',title='test') 

Ảnh mẫu sau khi thực hiện những điều chỉnh:

enter image description here

Bên cạnh: Nếu x- chồng chéo và y- nhãn trong subplot thấp nhất là một vấn đề xem xét "cắt tỉa" một trong những người là tốt.

+0

Tôi không muốn tạo khoảng trống giữa hai nhãn. Tôi muốn giá trị thấp nhất được ưu tiên. tức là 0,0 để được nhìn thấy thay vì lộn xộn 1.0 và 0.0. – Griff

+0

Cảm ơn bạn đã làm rõ. Tôi sẽ cập nhật câu trả lời của tôi trong giây lát. – bernie

+0

Có cách nào để đảm bảo có số lượng bọ ve bằng nhau vì vậy nó không có vẻ lúng túng như đã thấy trong cốt truyện của bạn? Cảm ơn. – Griff

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