ax.xaxis.set_major_formatter不会更改 Xtick 标签显示的数字的偏差



我有一个熊猫数据框,我正在尝试绘制两列相互对比。 但问题是我的 xtick 标签被完全精确地显示。如何缩写(我的Xaxis值是元组(?

fig = plt.figure(figsize=(13,160))
plt.style.use('ggplot')
sns.set_style('ticks')
plt.rcParams['font.size'] = 12 
n = 0
for name, group in a.groupby(['Config','prot_state','repeat','leg']):
ax = fig.add_subplot(20,2,n+1)
group = group.sort_values(by='Lambda')
title = name[0]+'-'+name[1]+'-'+name[2]+'('+name[3]+')'
ax = group.plot(y='A', x='Lambda', ax=ax, marker='o', lw=3, label='Chain_A', title=title)
ax = group.plot(y='B', x='Lambda', ax=ax, marker='o', lw=3, label='Chain_B', title=title)
ax.set_xlabel('$lambda_{Coul}$, $lambda_{Vdw}$')
ax.set_ylabel('$Delta G$ (KJ/mol)')
ax.get_xaxis().get_major_formatter()
sns.despine(offset=10, ax=ax)
labels = ax.get_xticklabels()
plt.setp(labels, rotation=90, fontsize=10)
ax.xaxis.set_major_formatter(FormatStrFormatter('%.1f'))
plt.xticks(range(len(group['Lambda'])), group['Lambda'])
n = n+1 
fig = ax.get_figure()  
plt.tight_layout()
fig.savefig('{}.pdf'.format('dg-dlambda'))

有谁知道我怎样才能将其缩写为两位数?

如果你的ax.xaxis.set_major_formatter(FormatStrFormatter(‘%.1f’))不起作用,你可以通过先将它们转换为字符串(前提是它们都是相同的数量级(然后切片来欺骗它:

labels = ax.get_xticklabels()
new_labels = []
n_digits = 2 + 1 # you will use this for slicing the string, so the +1 is there so that your last digit doesn't get excluded. The first number (2) is arbitrary, depending how many you want.
for i in labels:
new_i = str(i)[:n_digits]
new_labels.append(new_i)
plt.xticks(labels, new_labels)

但是,显然,这仅在小数点前具有相同数量的数字时才有效。

最新更新