如何使用matplotlib更改xticks?

4

我想使用matplotlib更改图表的xticks,例如用字符串替换。根据matplotlib手册https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.xticks.html,我编写了以下代码:

import matplotlib.pyplot as plt
import numpy as np

x=np.arange(10)
y=x**2
plt.figure()
plt.plot(x,y)
locs, labels=plt.xticks()
new_xticks=['test' for d in locs]
plt.xticks(new_xticks, rotation=45, horizontalalignment='right')

当我这样做时,x轴上的刻度没有被修改,并且会出现以下错误: 转换错误:无法将值转换为轴单位:['test','test','test','test','test','test','test']。
编辑:我希望在原始图形的相同位置拥有刻度,其中x轴不超过最小和最大值,如下图所示: plot 非常感谢您的帮助!
编辑2:这不是重复问题,因为我直接进行操作而不使用子图。
2个回答

2
请这么做:

做类似以下的操作:

import matplotlib.pyplot as plt
import numpy as np

x=np.arange(10)
y=x**2
plt.figure()
plt.plot(x,y)
locs, labels=plt.xticks()
x_ticks = []
new_xticks=['test' for d in locs]
plt.xticks(locs,new_xticks, rotation=45, horizontalalignment='right')
plt.show()

输出:

在此输入图片描述

注:Original Answer翻译成“最初的回答”。

1
非常感谢,但我仍然有一个问题:在这种情况下,第一个值在图形开始之前,最后一个值在图形之后。如何替换为字符串,具有与图形相同的值和比例,而没有这个问题? - JohnBranson

1
你正在修改刻度。但是刻度需要是数字。如果你想要修改刻度标签,可以通过以下方式进行。
plt.xticks(locs, new_xticks)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接