[英]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.