You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Seaborn Whitegrid风格下创建无坐标轴刻度的散点图

解决无刻度但保留Seaborn Whitegrid网格的散点图问题

我懂你的困扰——想去掉坐标轴的刻度标签,结果连Whitegrid的网格线也一起消失了。这是因为plt.xticks([])和plt.yticks([])会直接移除刻度的所有关联元素(包括刻度线、标签和对应的网格线),我们真正需要的是只隐藏刻度标签,保留网格线。

下面是调整后的代码,完美实现你的需求:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# 启用Seaborn的Whitegrid风格(替换原代码的ggplot风格)
sns.set_style("whitegrid")

fig, ax = plt.subplots()
colormap = np.array(["orange","cyan"])
x = np.array([2,2,2,4,4,4,4]*10)
y = np.array([2,4])
# 沿用你原来的颜色映射逻辑
colors = colormap[np.where(y==x[:,None])[1]]
Y = np.random.random((70,2))

# 核心操作:保留刻度位置,仅隐藏刻度标签
ax.set_xticklabels([])
ax.set_yticklabels([])

# 若你还想隐藏坐标轴上的刻度短线,可添加以下两行
# ax.tick_params(axis='x', which='both', bottom=False)
# ax.tick_params(axis='y', which='both', left=False)

ax.scatter(Y[:,0], Y[:,1], c=colors)
plt.show()

关键逻辑说明

  • sns.set_style("whitegrid"):正确启用你需要的Seaborn白色网格风格,替代原代码里的ggplot风格,避免样式冲突。
  • ax.set_xticklabels([])/ax.set_yticklabels([]):只清空刻度的文本标签,不会删除刻度的位置信息,因此对应的网格线会被保留。
  • 若不需要坐标轴上的短线刻度,可启用注释里的tick_params代码,将bottom和left设为False,实现“无刻度标签+无刻度线+保留网格”的效果。

另外提一句,原代码里的frameon=False会移除图框,如果你不需要这个效果可以删掉,Whitegrid风格默认带有图框,可根据需求自行调整。

内容的提问来源于stack exchange,提问作者Shew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:37:40