我正在使用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'))
答案 0 :(得分:1)
要获得我认为您想要的整数值xticks
,您可以在设置xticks
之前设置xticklabels
您可以使用x_range
执行此操作:
ax.set_xticks(x_range)
答案 1 :(得分:0)
您可能会发现在代码中添加/替换此行非常有用:
offset = 0.5
if xlim: ax.set_xlim(xlim[0]-offset, xlim[1]+offset)
而不是:
if xlim: ax.set_xlim(xlim)
这将在y轴和xticks之间增加一个偏移量。