我目前正在使用 y 轴的科学记数法生成不同的数字,导致某些图上的刻度为 2 或 6,而另一些图上的刻度为 2.5 或 8.9。我希望 y 轴上始终保留一位小数的刻度,即使它添加了零。这是一个例子
import matplotlib.pyplot as plt
import numpy as np
plt.plot(np.arange(1, 10), np.arange(1, 10)**5)
ax = plt.gca()
plt.ticklabel_format(axis='y', style='sci')
ax.yaxis.major.formatter.set_powerlimits((0,0))
plt.show()
Run Code Online (Sandbox Code Playgroud)
我可以添加什么来强制在 y 轴上绘制刻度 1.0、2.0 等?
目前不ScalarFormatter支持刻度的自定义格式,例如设置小数位数。但是,您可以扩展该类,以便强制它使用您指定的格式。这是一个例子:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import ScalarFormatter
class ScalarFormatterForceFormat(ScalarFormatter):
def _set_format(self): # Override function that finds format to use.
self.format = "%1.1f" # Give format here
plt.plot(np.arange(1, 10), np.arange(1, 10)**5)
ax = plt.gca()
yfmt = ScalarFormatterForceFormat()
yfmt.set_powerlimits((0,0))
gca().yaxis.set_major_formatter(yfmt)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这是它的外观。
| 归档时间: |
|
| 查看次数: |
6376 次 |
| 最近记录: |