我正在使用matplotlib2tikz
它绘制条形图。但是,刻度之间的间距不够。如何增加结果之间的间距?
我的代码:
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import scipy as sp
h = [47]*90
labels = ['a']*90
fig = plt.figure(figsize=(len(labels) * 0.45, 7))
ax = fig.add_subplot(111)
rects1 = ax.bar(sp.arange(len(h)), h, 0.35, color='r')
ax.set_xticks(sp.arange(len(labels)))
ax.set_xlabel("X Label")
ax.set_ylabel("Y Label")
ax.set_xticklabels(labels,fontsize=14, rotation="vertical")
ax.set_title("Test plot")
from matplotlib2tikz import save as tikz_save
tikz_save("test.tex")
我希望标签之间的间隔更大,以便于阅读 - 我该如何实现?(无需手动编辑生成的 tikz 代码)
答案1
如果必须显示所有标签,那么您的选择就有点有限了。您可以减少条形图和轴边之间的空白,可以减小刻度标签的字体大小,还可以使轴更宽。我认为您能做的不多。
- 为了减少空白,请添加例如
ax.set_xlim([-0.5,89.5])
(或使其依赖于len(h)
)。 - 要减小刻度标签的字体大小,请添加
extra_axis_parameters={'xticklabel style={font=\\scriptsize}'}
的调用tikz_save
。(或者\\footnotesize
。\\tiny
) - 要增加宽度,请添加
figurewidth='15cm'
的调用tikz_save
。(根据需要调整宽度。)
因此,
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import scipy as sp
h = [47]*90
labels = ['a']*90
fig = plt.figure(figsize=(len(labels) * 0.45, 7))
ax = fig.add_subplot(111)
rects1 = ax.bar(sp.arange(len(h)), h, 0.35, color='r')
ax.set_xticks(sp.arange(len(labels)))
ax.set_xlim([-0.5,89.5])
ax.set_xlabel("X Label")
ax.set_ylabel("Y Label")
ax.set_xticklabels(labels,fontsize=14, rotation="vertical")
ax.set_title("Test plot")
from matplotlib2tikz import save as tikz_save
tikz_save("test.tex",figurewidth='15cm',figureheight='6cm',extra_axis_parameters={'xticklabel style={font=\\scriptsize}'})
你得到