【问题标题】:How to remove ticks lines and labels when using add_gridspec in matplotlib seaborn在 matplotlib seaborn 中使用 add_gridspec 时如何删除刻度线和标签
【发布时间】:2020-07-19 22:17:15
【问题描述】:

这是我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('')

这给了我以下输出:

我已将要显示的名称涂黑,但我想知道如何隐藏其他 x 和 y 标签?例如所有小数。我认为它们与 4 个单独地块的 gridspec 框有关,但我不知道如何删除它们。我可以删除 xticklabelsxlabel 但它似乎不适用于小数点。

总结性问题: 如何删除图中的小数点?任何帮助将非常感激!谢谢!

【问题讨论】:

  • 您添加了两次子图。一次 w 子图,第二次 w 你的 add_subplot 调用
  • 感谢@JodyKlymak,这是有道理的,尽管没有两者我似乎无法使其工作?有什么建议可以复制相同的图形尺寸(具有高度比)但保留一个子图?
  • f= plt.figure(figsize=(20,10))spec = f.add_gridspec(ncols = 1, nrows = 4, height_ratios = [1,1,1,.3])

标签: python pandas matplotlib seaborn


【解决方案1】:

如果我理解得很好,您可以删除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)

输出如下:

【讨论】:

  • 谢谢@让我们试试。当我添加它时,它正在删除情节的名称而不是数字。我正在尝试做相反的事情,但不确定如何引用包含小数而不是名称的网格
  • 即使您使用.get_major_ticks()[k] 来选择特定的报价?我认为现在您将其应用于整个xaxis,这就是它仅删除名称的原因。我会尽快提供一个例子。
  • 谢谢!我应该用任何东西替换k 吗?它出现k is not defined 错误
  • 查看示例!
猜你喜欢
  • 2020-12-24
  • 2018-11-22
  • 2021-03-15
  • 2019-09-11
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
相关资源
最近更新 更多