python中科学计数法转换为十进制受到小数点限制_python-在Matplotlib中以科学计数法显示第一个十进制数字...

我目前正在用科学记数法生成不同的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()

99127410f0c0d75a8428d75546ab405f.png

我可以添加哪些内容以强制在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()

这是它的外观.

1b05ac0d02cb74d5eee3ccbf29d1d3e0.png

标签:python,matplotlib

来源: https://codeday.me/bug/20191011/1894509.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值