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

o2rvlv0m  于 2023-10-24  发布在  其他
关注(0)|答案(4)|浏览(207)

我有

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. str StrFormatter(fmt)没有帮助

1l5u6lss

1l5u6lss1#

将数字转换为整数:

ax2.set_xticklabels(tick_labels.astype(int))
pjngdqdw

pjngdqdw2#

在y轴上设置yticks .astype(int)中的标签对我来说是有效的(xticks用于x轴):

plt.yticks(ticks=plt.yticks()[0], labels=plt.yticks()[0].astype(int))
shstlldc

shstlldc3#

我似乎倾向于在我发布自己的问题后很快找到答案。这不是很简单,但它很有效。只需插入四行将tick数字转换为字符串,并手动删除小数点及其后面的所有内容:

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)

“range(0,10)”中的“10”给出了1000处的最后一个刻度,即使它没有反映在下面的图像中。"[0]“接受了字符串的第一部分,现在已经被分割了-对我来说,没有小数的部分。以及所需的刻度标签:

yfjy0ee7

yfjy0ee74#

也许这并不完全是你想要的,但是如果你在一个框架中有你的数据,那么这是可行的:

df.columns = pd.to_numeric(df.columns, downcast='integer')

相关问题