Python Matplotlib:轴刻度数字格式-工程符号

Python Matplotlib:轴刻度数字格式-工程符号,python,matplotlib,formatting,Python,Matplotlib,Formatting,背景 可以按照建议将轴刻度转换为科学格式 数字可以转换为工程格式,一次一个,如图所示 问题: 如何在工程符号中设置轴记号的格式,即数量级是3的倍数。您可能想确切解释工程符号的含义,但有一个,它自动使用国际单位制前缀,即micro、mili、kilo、mega等 fig, ax = plt.subplots() ax.set_ylim(0,1e6) ticker = matplotlib.ticker.EngFormatter(unit='') ax.yaxis.set_major_formatt

背景

可以按照建议将轴刻度转换为科学格式

数字可以转换为工程格式,一次一个,如图所示

问题:


如何在工程符号中设置轴记号的格式,即数量级是3的倍数。

您可能想确切解释工程符号的含义,但有一个,它自动使用国际单位制前缀,即micro、mili、kilo、mega等

fig, ax = plt.subplots()
ax.set_ylim(0,1e6)
ticker = matplotlib.ticker.EngFormatter(unit='')
ax.yaxis.set_major_formatter(ticker)

您可能想确切地解释工程符号的含义,但有一个自动使用国际单位制前缀的符号,即micro、mili、kilo、mega等

fig, ax = plt.subplots()
ax.set_ylim(0,1e6)
ticker = matplotlib.ticker.EngFormatter(unit='')
ax.yaxis.set_major_formatter(ticker)
在使用该模块时,我想到了以下解决方案:

从十进制输入十进制 将matplotlib.pyplot作为plt导入 将numpy作为np导入 data1=np.linspace-9,9,19 数据2=2.3*10**数据1 yticks=10**np.linspace-9,9,19 yticklabels=[Decimaly.quantizeDecimal'0.000000000 1'。将Ytick中y的.to_eng_字符串规范化] plt.图1 plt.subplot121 plt.gridTrue plt.xlabel'k' plt.ylabel'10^k' plt.plotdata1,data2,k.' plt.yscale'log' plt.xticksdata1 plt.yticksyticks plt.subplot 122 plt.gridTrue plt.xlabel'k' plt.ylabel'10^k' plt.plotdata1,data2,k.' plt.yscale'log' plt.xticksdata1 plt.yticksyticks,yticksyticks标签 节目 请参阅:0到-6之间的指数未按定义/标准转换为所需格式。此外,我还需要使用从十进制开始的量化方法,因为否则输出的数字将必须位于多个位置。去掉量化部分,你就会明白我的意思

希望有帮助

在使用模块时,我想到了以下解决方案:

从十进制输入十进制 将matplotlib.pyplot作为plt导入 将numpy作为np导入 data1=np.linspace-9,9,19 数据2=2.3*10**数据1 yticks=10**np.linspace-9,9,19 yticklabels=[Decimaly.quantizeDecimal'0.000000000 1'。将Ytick中y的.to_eng_字符串规范化] plt.图1 plt.subplot121 plt.gridTrue plt.xlabel'k' plt.ylabel'10^k' plt.plotdata1,data2,k.' plt.yscale'log' plt.xticksdata1 plt.yticksyticks plt.subplot 122 plt.gridTrue plt.xlabel'k' plt.ylabel'10^k' plt.plotdata1,data2,k.' plt.yscale'log' plt.xticksdata1 plt.yticksyticks,yticksyticks标签 节目 请参阅:0到-6之间的指数未按定义/标准转换为所需格式。此外,我还需要使用从十进制开始的量化方法,因为否则输出的数字将必须位于多个位置。去掉量化部分,你就会明白我的意思


希望有帮助

也许ScalarFormatter代替EngFormatter可以完成这项工作。

也许ScalarFormatter代替EngFormatter可以完成这项工作。

我正在寻找一种解决方案,它将以数量级显示轴刻度,例如10**-3,10**+3,而不是m,k符号。谢谢。我正在寻找一种解决方案,它将以数量级显示轴刻度,例如10**-3,10**+3,而不是m,k符号。谢谢。您需要编写自己的格式化程序,它是ScalarFormatter和EngFormatter的混合体。或者,您可以将其打包到自定义函数中并使用FuncFormatter。您需要编写自己的格式化程序,将ScalarFormatter和EngFormatter混合使用。或者,您可以将其打包到自定义函数中并使用FuncFormatter。