matplotlib 日志格式中的y刻度在不应作为标签时作为标签

rjee0c15  于 2023-05-29  发布在  其他
关注(0)|答案(1)|浏览(108)

我想用matplotlib / seaborn和对数y标度绘制两条线。

pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

data1=pd.Series([0.5,  1.6])
data2=pd.Series([0.5,  1.1 ])
f,ax=plt.subplots()
sns.lineplot(data1)
sns.lineplot(data2)
ax.set_yscale("log")

好吧,我这里有两样东西,我不想要的。首先,用科学的方式写1和0.6并不好,其次,我实际上希望0.5被标记而不是0.6。到目前为止,听起来像是一个简单的问题,在stackoverflow上有大量的解决方案。例如,我试了其中的几个

import matplotlib.ticker as ticker
ax.set_yticks([0.5,1,1.5])
ax.yaxis.set_major_formatter(ticker.FormatStrFormatter("%.1f"))

我还尝试了标量格式化程序,固定定位器和更多的选项。

现在来说说我的真实的问题:不管我怎么尝试6x 10 -1都不会改变。当我寻找标记为0.6的刻度时,实际上不应该标记。这似乎是一些自动标签,因为matplotlib认为“好吧,这是某种程度上的规模结束,它应该更好地标记无论如何”。虽然这种自动性似乎站在格式化机制之外。我发现的唯一改变方法是手动标记0.6,但我不想标记它...

5f0d552i

5f0d552i1#

好吧,感谢BigBen的回答,我得到了正确的提示。我不知道标签格式也分为主要和次要刻度。我用

ax.yaxis.set_minor_locator(ticker.MultipleLocator(base=0.1))
ax.yaxis.set_minor_formatter(ticker.FormatStrFormatter(""))

相关问题