如何在matplotlib的轴刻度中删除小数点后的数字?

时间:2015-12-10 02:58:28

标签: python matplotlib

我有

tick_location = np.linspace(0.01, 10, num=10, endpoint=True)
ax2.set_xticks(tick_location)
tick_labels = np.around(1/new_tick_loc*1e4,decimals=-2)
ax2.set_xticklabels(tick_labels)

这个(以及一些额外的代码)产生了下面的图,但是我想从顶部x轴上的刻度标签中删除小数点和后面的数字。

使用matplotlib.ticker.FormatStrFormatter(fmt)无效

top x axis with decimal

2 个答案:

答案 0 :(得分:6)

将数字转换为整数:

ax2.set_xticklabels(tick_labels.astype(int))

答案 1 :(得分:0)

在发布自己的问题后,我似乎很快就会找到答案。它不是很直接,但它的工作原理。只需插入四行将刻度数转换为字符串,然后手动删除小数及其后的所有内容:

tick_location = np.linspace(0.01, 10, num=10, endpoint=True)
ax2.set_xticks(tick_location)
tick_labels = np.around(1/new_tick_loc*1e4,decimals=-2)
tick_labels_str = tick_labels.astype(str)
tick_labels_free=[]
for i in range(0,10):
    tick_labels_free.append(tick_labels_str[i].split('.')[0])
ax2.set_xticklabels(tick_labels_free)

'范围(0,10)'中的'10'表示最后一个刻度为1000,即使它没有反映在下面的图像中。 '[0]'取出现在被拆分的字符串的第一部分 - 对我来说是没有小数的部分。以及所需的刻度标签:

correct top x axis