Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在matplotlib中更改日志比例刻度标签_Python_Matplotlib - Fatal编程技术网

Python 如何在matplotlib中更改日志比例刻度标签

Python 如何在matplotlib中更改日志比例刻度标签,python,matplotlib,Python,Matplotlib,我正在尝试在matplotlib中更改日志图的刻度标签,通常通过手动设置标签可以正常工作。但是,经常出现如下所示的问题,手动移动标签似乎会保留一些旧标签。你知道怎么解决这个问题吗 import matplotlib.pyplot as plt %matplotlib inline fig, ax = plt.subplots() x = [1, 10] y = [0, 1] ax.plot(x, y) ax.set_xscale('log') ax.set_xlim(0, 10) ax.se

我正在尝试在matplotlib中更改日志图的刻度标签,通常通过手动设置标签可以正常工作。但是,经常出现如下所示的问题,手动移动标签似乎会保留一些旧标签。你知道怎么解决这个问题吗

import matplotlib.pyplot as plt
%matplotlib inline

fig, ax = plt.subplots()
x = [1, 10]
y = [0, 1]
ax.plot(x, y)
ax.set_xscale('log')
ax.set_xlim(0, 10)

ax.set_xticks([2.5, 7.5])
此外,我最近升级到matplotlib 2.0.2,我不记得以前见过这种行为


显示的值是小刻度,要禁用它们,您可以声明:

ax.minorticks_off()
这也将导致7.5的刻度标签消失

您可能需要以下解决方案:

from matplotlib.ticker import StrMethodFormatter, NullFormatter
ax.xaxis.set_major_formatter(StrMethodFormatter('{x:.1f}'))
ax.xaxis.set_minor_formatter(NullFormatter())

显示的值是小刻度,要禁用它们,可以声明:

ax.minorticks_off()
这也将导致7.5的刻度标签消失

您可能需要以下解决方案:

from matplotlib.ticker import StrMethodFormatter, NullFormatter
ax.xaxis.set_major_formatter(StrMethodFormatter('{x:.1f}'))
ax.xaxis.set_minor_formatter(NullFormatter())

谢谢,行得通!一个简短的后续问题-如何将勾号标签显示为10^{-1},10^{-2},如果可能,还可以显示2倍10^{-1}。[想象它是LaTeX,我不知道如何在stackoverflow上显示它。]
ax.xaxis.set\u major\u格式化程序(StrMethodFormatter({x:.0E}'))
在ofc设置适当的XTick之后;在answer方法中,强制格式为1位小数的浮点;这将迫使它使用0十进制科学记数法。ofc还有其他选择,但我相信您可以找到有关字符串格式的主题,这些主题可以在比我更短的时间内为您提供更多信息我在寻找一些稍微不同的东西。基本上,我想要一个格式化程序,用实际指数显示刻度标签,如我的问题所示。我发现
matplotlib.ticker.LogFormatterMathtext
正是这样做的。不过,谢谢你给我指出股票代码的子包,这很有帮助。啊,哎呀。我的错误解释很糟糕,但仍然很高兴你能找到你想要的。谢谢,这很有效!一个简短的后续问题-如何将勾号标签显示为10^{-1},10^{-2},如果可能,还可以显示2倍10^{-1}。[想象它是LaTeX,我不知道如何在stackoverflow上显示它。]
ax.xaxis.set\u major\u格式化程序(StrMethodFormatter({x:.0E}'))
在ofc设置适当的XTick之后;在answer方法中,强制格式为1位小数的浮点;这将迫使它使用0十进制科学记数法。ofc还有其他选择,但我相信您可以找到有关字符串格式的主题,这些主题可以在比我更短的时间内为您提供更多信息我在寻找一些稍微不同的东西。基本上,我想要一个格式化程序,用实际指数显示刻度标签,如我的问题所示。我发现
matplotlib.ticker.LogFormatterMathtext
正是这样做的。不过,谢谢你给我指出股票代码的子包,这很有帮助。啊,哎呀。我的错误解释很糟糕,但仍然很高兴你能找到你想要的东西。