我正在尝试删除matplotlib自动放在我的图表上的偏移量。例如,使用以下代码:
x=np.array([1., 2., 3.])
y=2.*x*1.e7
MyFig = plt.figure()
MyAx = MyFig.add_subplot(111)
MyAx.plot(x,y)
我获得了以下结果(抱歉,我无法发布图像):y轴的刻度为2,2.5,3,...,6,在y的顶部有一个唯一的“x10 ^ 7”轴。
我想从轴的顶部删除“x10 ^ 7”,并使其与每个刻度(2x10 ^ 7,2.5x10 ^ 7等等)出现。如果我理解我在其他主题中看到的内容,我必须使用use_Offset变量。所以我尝试了以下的事情:
MyFormatter = MyAx.axes.yaxis.get_major_formatter()
MyFormatter.useOffset(False)
MyAx.axes.yaxis.set_major_formatter(MyFormatter)
没有任何成功(结果不变)。 难道我做错了什么?我该如何改变这种行为?或者我要手动设置滴答?
感谢提前帮助!
答案 0 :(得分:0)
您可以使用ticker
模块中的FuncFormatter
来设置刻度标签的格式:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import FuncFormatter
x=np.array([1., 2., 3.])
y=2.*x*1.e7
MyFig = plt.figure()
MyAx = MyFig.add_subplot(111)
def sci_notation(x, pos):
return "${:.1f} \\times 10^{{6}}$".format(x / 1.e7)
MyFormatter = FuncFormatter(sci_notation)
MyAx.axes.yaxis.set_major_formatter(MyFormatter)
MyAx.plot(x,y)
plt.show()
旁注;出现在轴顶部的“x10 ^ 7”值不是偏移量,而是科学记数法中使用的因子。可以通过调用MyFormatter.use_scientific(False)
禁用此行为。数字将显示为小数。
偏移量是您必须添加(或减去)到滴答值而不是乘以的值,因为后者是尺度
供参考,该行
MyFormatter.useOffset(False)
应该是
MyFormatter.set_useOffset(False)
因为第一个是bool
(只能包含值True
或False
),这意味着它不能作为方法调用。后者是用于启用/禁用偏移的方法。