绘制远离y轴的非数字x轴

时间:2015-06-16 08:25:20

标签: python matplotlib

我正在使用matplotlib来绘制具有非数字x轴的曲线。我希望在y轴和图的开头之间有一些空间。

此代码实现了一个带有间隙的子图(左侧)&使用set_xlim方法(右侧)的间隙子图。为什么我的xticklabels不再匹配右边的子图中的标记?

有没有比使用set_xlim更好的方法将我的情节从轴上移开?

注意:我使用FigureCanvasAgg的原因是因为很容易将其作为Web请求进行传输。

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

2 个答案:

答案 0 :(得分:1)

要获得我认为您想要的整数值xticks,您可以在设置xticks之前设置xticklabels

您可以使用x_range执行此操作:

ax.set_xticks(x_range)

enter image description here

答案 1 :(得分:0)

您可能会发现在代码中添加/替换此行非常有用:

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

而不是:

if xlim: ax.set_xlim(xlim)

这将在y轴和xticks之间增加一个偏移量。

相关问题