我的老师说,在图表中,我必须将轴标记为0, 0.25, 0.5
而不是0.00,0.25,0.50,...
。
我知道如何将其标记为0.00,0.25,0.50
(plt.yticks(np.arange(-1.5,1.5,.25))
),但是,我不知道如何以不同的精度绘制刻度标记。
我试图像
那样做plt.yticks(np.arange(-2,2,1))
plt.yticks(np.arange(-2.25,2.25,1))
plt.yticks(np.arange(-1.5,2.5,1))
无济于事。
答案 0 :(得分:8)
已经回答了这个问题,例如Matplotlib: Specify format of floats for tick lables。但实际上你想要的格式不同于引用的问题。
因此,此代码为您提供y轴上的所需精度
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import FormatStrFormatter
fig, ax = plt.subplots()
ax.yaxis.set_major_formatter(FormatStrFormatter('%g'))
ax.yaxis.set_ticks(np.arange(-2, 2, 0.25))
x = np.arange(-1, 1, 0.1)
plt.plot(x, x**2)
plt.show()
您可以在传递给FormatStrFormatter的String中定义所需的精度。在上面的例子中,它是“%g”,代表一般格式。此格式删除无关紧要的尾随零。您还可以传递其他格式,例如“%。1f”,这将是一个小数位的精度,而“%。3f”将是三位小数的精度。这些格式详细解释了here。
答案 1 :(得分:4)
为了将刻度位置设置为0.25的倍数,您可以使用matplotlib.ticker.MultipleLocator(0.25)
。然后,您可以使用FuncFormatter
格式化ticklabels,其功能可以从数字的右侧删除零。
import matplotlib.pyplot as plt
import matplotlib.ticker
plt.plot([-1.5,0,1.5],[1,3,2])
ax=plt.gca()
f = lambda x,pos: str(x).rstrip('0').rstrip('.')
ax.xaxis.set_major_locator(matplotlib.ticker.MultipleLocator(0.25))
ax.xaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(f))
plt.show()