matplotlib Y轴上刻度的字体大小不一致

zd287kbt  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(140)

我使用Seaborn绘制小提琴,尽管我假设这个错误来自Matplotlib。

sns.set_context("notebook", font_scale=1, rc={"lines.linewidth": 1.5})

(to全球调整)和

ax.tick_params(axis='y', labelsize=19) 
ax.yaxis.get_offset_text().set_fontsize(19)

然而,我获得的结果取决于tick标签的

也就是说,每次标签是10的完美逆幂(这里是1 E-4)时,我会得到一个字体大小,否则我会得到另一个字体大小。我尝试了多种值的组合(例如,更改“font_scale”或labelsize..),但我从来没有得到一致的东西。当我设置不同的符号样式时:
ax.yaxis.set_major_formatter(mpl.ticker.ScalarFormatter(useMathText=True,useOffset=False))
它只影响10的完全反幂的值。
我在这里使用的其他(可能)相关绘图函数是:

b = sns.violinplot(data=mydata_without_outliers, cut=0,  palette=colors, scale='width')
ax.set(yscale="log")
sns.scatterplot(data=outlier_data, marker='D', facecolor='blue', edgecolor=(0,0,0), color='blue')
plt.subplots_adjust(top=0.947, bottom=0.074, left=0.052, right=0.99, hspace=0.095, wspace=0.185);
sns.despine()

其产生具有叠加的散点图的小提琴图以显示异常值。

编辑:澄清一下,这不是一个关于“如何在Matplotlib中更改字体”的问题:我可以谷歌一下。这不是一个关于“如何更改次要和主要刻度”的问题,因为这假设一个人 * 已经 * 知道次要和主要刻度是什么。这个问题实际上是关于上面问的问题:如何使字体在10的幂和非幂之间保持一致,其他问题没有回答,而tmdvision提出的答案完美地回答了。谷歌搜索“10字体matplotlib的幂”导致完全不同的问题有完全不同的答案,包括StackOverflow。

lmyy7pcs

lmyy7pcs1#

ax.tick_params有一个名为which的参数,该参数控制它是否将修改major tick、minor tick或both
默认值是major,这就是你看到的--主刻度是10的整数次幂,次刻度是其他的。
因此,解决方案是添加which='both'

ax.tick_params(axis='y', which='both', labelsize=19)

如果你还想改变次要刻度的格式,你可以添加一行:

ax.yaxis.set_minor_formatter(mpl.ticker.ScalarFormatter(useMathText=True, useOffset=False))

相关问题