在matplotlib seaborn中使用add_gridspec时如何删除刻度线和标签

2024-09-27 21:29:40 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的Previous Question的后续节目

我有以下代码:

#Plot

cmap = plt.cm.GnBu_r
f, ax = plt.subplots(nrows=4,figsize=(20,10))
spec = f.add_gridspec(ncols = 1, nrows = 4, height_ratios = [1,1,1,.3])


ax0 = f.add_subplot(spec[0])
ax0 = sns.heatmap(df1,cbar=False,cmap=cmap)

ax1 = f.add_subplot(spec[1])
ax1 = sns.heatmap(df2,cbar=False,cmap=cmap)

ax2 = f.add_subplot(spec[2])
ax2 = sns.heatmap(df3,cbar=False,cmap=cmap)

ax3 = f.add_subplot(spec[3])
ax3 = sns.heatmap(df4,cbar=False,cmap=cmap)


axis = [ax0,ax1,ax2,ax3]
names = ['1', '2', '3','4']

for axi in axis:
    n = axis.index(axi)
    axi.set_title(str(names[n]))
    axi.set(xticklabels=[])
    axi.set_xlabel('')
    axi.xaxis.set_visible(False)
    h = axi.get_yticks()
    w = axi.get_xticks()
    axi.vlines(25, h[0] - 0.5, h[-1] + .5, linewidth=1, color="black")
    axi.vlines(50,h[0]-0.5,h[-1]+.5, linewidth=1, color="black")
    axi.vlines(75,h[0]-0.5,h[-1]+.5, linewidth=1, color="black")
    axi.vlines(100,h[0]-0.5,h[-1]+.5, linewidth=2, color="black")
    axi.set_ylabel('')

这给了我以下输出:

enter image description here

我已经把我想展示的名字涂掉了,但是我想知道如何隐藏其他的x和y标签?所有的小数。我认为它们与4个独立绘图的gridspec框有关,但我不知道如何删除它们。我可以删除xticklabelsxlabel,但它在小数点上似乎不起作用

摘要问题: 如何删除绘图中的小数点?任何帮助都将不胜感激!谢谢


Tags: addfalsecolorcmapblackspecsetsns
1条回答
网友
1楼 · 发布于 2024-09-27 21:29:40

如果我理解得很好,您可以删除特定的记号,如here所述。利用

yticks = axi.yaxis.get_major_ticks()
yticks[k].set_visible(False)

已编辑

这里有一个例子

import matplotlib
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
y_dot = [0,1,2,3,4,5,6,7]
x_dot = [0,1,2,3,4,5,6,7]

xticks = ax.xaxis.get_major_ticks()

for x in x_dot:
    for y in y_dot:
        ax.plot(x, y, 'ro')
        
l_x = [1,3,5]
for element in l_x:
    xticks[element].set_visible(False)

yticks = ax.yaxis.get_major_ticks()
l_y = [2,4,6]
for element in l_y:
    yticks[element].set_visible(False)

具有以下输出:

enter image description here

相关问题 更多 >

    热门问题