繁体   English   中英

如何在 Matplotlib 和 Seaborn 中的 x 轴刻度标记(不是刻度标签)和 x 轴之间添加填充

[英]How do you add padding between the x-axis tick marks (not tick labels) and the x-axis in Matplotlib and Seaborn

我使用 Seaborn 和 Matplotlib 创建了一个热图。 我想弄清楚如何在 x 轴和 xtickmarks 之间添加填充。

我在网上搜索并找到了使用axs.tick_params(axis='x', pad=100)在刻度标签和刻度线之间添加间距并填写所需填充值的方法。 这不是我想弄清楚的。

我还找到了使用axs.set_xlabel("x axis label", fontsize=24, labelpad=100)在 x 轴 label 和 x 轴之间添加间距的方法,这也不是我想要的。

这是我的代码和当前的 output,以及我正在尝试进行的更改的草图(将刻度线从轴上移开)。

fig, axs = plt.subplots(figsize=(12,12)) 

sns.heatmap(data=heat_df, cmap="Blues", annot=True, annot_kws={'fontsize' : 20 }, xticklabels=[0,1], 
yticklabels=[0,1], square=True, ax=axs)
axs.set_title("Accuracy Score: " + str(accuracy), fontsize=24, pad=100)
axs.set_xlabel("Predicted label", fontsize=24)
axs.set_ylabel("Actual label", fontsize=24)
axs.tick_params(axis='y', labelsize=20)
axs.tick_params(axis='x', labelsize=20, pad=100)

plt.show()

带有红色标记的热图显示希望将刻度标记移出轴:

具有所需更改的热图

您可以通过获取 xtick Line2D 对象的列表,然后手动设置它们的 position 来实现。 这不是一个自动解决方案,因为您可能需要调整数字以获得所需的刻度:

fig, axs = plt.subplots(figsize=(12,12))

heat_df = np.random.randint(0, 10, (2,2))
sns.heatmap(data=heat_df, cmap="Blues", annot=True, annot_kws={'fontsize' : 20 },
            xticklabels=[0,1], yticklabels=[0,1], square=True, ax=axs)
axs.set_xlabel("Predicted label", fontsize=24)
axs.set_ylabel("Actual label", fontsize=24)
axs.tick_params(axis='y', labelsize=20)
axs.tick_params(axis='x', labelsize=20, pad=30)

for line in axs.get_xticklines():
    line.set_data([0, -0.06])

plt.show()

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM