2015-06-16 5 views
1

Я использую matplotlib для построения кривой с нечисловой осью х. Я хотел бы, чтобы было какое-то пространство между осью y и началом сюжета.Вычисление нечисловой оси X от оси y

Этот код реализует подзаголовок с зазором (слева) & подзаголовок с пробелом с использованием метода set_xlim (справа). Почему мои xticklabels больше не соответствуют маркерам в подзаголовке справа?

Есть ли лучший способ сдвинуть мой график от оси, чем использовать set_xlim?

Примечание. Причина, по которой я использую FigureCanvasAgg, состоит в том, что это легко передать в виде веб-запроса.

from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas 
from matplotlib.figure import Figure 

import math 

def render_subplot(fig, parameters, xlim, ylim): 
    ax=fig.add_subplot(parameters) 

    labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] 
    x_range = range(10) 
    if xlim: ax.set_xlim(xlim) 
    if ylim: ax.set_ylim(ylim) 
    ax.plot(
     x_range, [math.sin(x/3.0) for x in x_range], 'g^-', 
     x_range, [math.cos(x/3.0) for x in x_range], 'b^-', 
    ) 
    ax.set_xticklabels(labels, rotation=45) 

fig=Figure(figsize=(8,4)) 
fig.set_facecolor('white') 
render_subplot(fig, 121, xlim=None, ylim=[-1.2, 1.2]) 
render_subplot(fig, 122, xlim=[-0.5, 12], ylim=[-1.2, 1.2]) 

fig.autofmt_xdate() 
canvas=FigureCanvas(fig) 
canvas.print_png(file('gap_at_axis_examples.png', 'wb')) 

enter image description here

ответ

1

получить xticks на целые значения, которые я думаю, вы хотите, вы можете установить xticks непосредственно перед установить xticklabels

Вы можете использовать x_range сделать это:

ax.set_xticks(x_range) 

enter image description here

+0

Спасибо, идеальный. – ChrisGuest

0

Вы могли бы найти это полезным, чтобы добавить/заменить эту строку (ы) к коду:

offset = 0.5 
if xlim: ax.set_xlim(xlim[0]-offset, xlim[1]+offset) 

вместо:

if xlim: ax.set_xlim(xlim) 

Это поставит дополнительное смещение между осью у и xticks.

+0

Спасибо. Это будет полезно сделать, но проблема заключалась не в отсутствии смещения, а в том, что маркеры не совпадали с тиками. – ChrisGuest

Смежные вопросы