Python Can';t在matplotlib中隐藏子批次轴标签或设置MaxNLocator

Python Can';t在matplotlib中隐藏子批次轴标签或设置MaxNLocator,python,matplotlib,Python,Matplotlib,我目前正试图在matplotlib中创建一个X X 3系列的图形,最近我也做了类似的事情,但这种特定的2D形式的度量确实给了我一个挑战,那就是如何删除轴标签或设置MaxNLocator 目前,每个子标签仍试图单独显示X标签和Y标签。使用我正在处理的相同代码,我根本没有在我的3 x 1绘图或1 x 1绘图中遇到这个问题。这似乎是特定于当我走X乘3路线时,我假设它与2D相关 以下是我目前正在尝试的。因为“团队”的数量目前波动,我创建了比我需要的更多的图,并删除了未使用的图。我可以稍后改进,但我更担心

我目前正试图在matplotlib中创建一个X X 3系列的图形,最近我也做了类似的事情,但这种特定的2D形式的度量确实给了我一个挑战,那就是如何删除轴标签或设置MaxNLocator

目前,每个子标签仍试图单独显示X标签和Y标签。使用我正在处理的相同代码,我根本没有在我的3 x 1绘图或1 x 1绘图中遇到这个问题。这似乎是特定于当我走X乘3路线时,我假设它与2D相关

以下是我目前正在尝试的。因为“团队”的数量目前波动,我创建了比我需要的更多的图,并删除了未使用的图。我可以稍后改进,但我更担心标签

plt.rcParams['figure.figsize'] = [18, 10]
fig, ax = plt.subplots(nrows=10, ncols=3)
for number, team in enumerate(team_dict.keys()):
    print(number,team)
    df = pd.DataFrame(data=team_dict[team])
    axy = ax[number // 3][number % 3]
    df = pd.pivot_table(df,values='count_events',index=['day'],columns=['level'])
    axy = df.plot(ax=axy)
    axy.legend().set_visible(False)
    axy.yaxis.set_major_locator(MaxNLocator(integer=True))
    axy.xaxis.label.set_visible(False)
我也尝试过这些

for main_axis in ax:
    for axis in main_axis:
        if axis.lines:
            axis.get_xaxis().label.set_visible(False)
            axis.get_yaxis().set_major_locator(MaxNLocator(integer=True))
            axis.legend().set_visible(False)

        if not axis.lines:
            axis.set_visible(False)
即使有了这些尝试,我仍然得到了这个

该指标涵盖90天的数据。所以X轴我只想一起隐藏。对于Y轴,我只想强制使用整数。我试过这样做,但没有用。出于某种原因,在这种2d格式中,我似乎根本无法操纵子地块标签

这是我的字典的一个小样本

team_dict['Team1']
[{'day': datetime.datetime(2019, 4, 1, 19, 31, 46, 606217),
  'level': '5',
  'count_events': 1},
 {'day': datetime.datetime(2019, 4, 2, 19, 31, 46, 606217),
  'level': '5',
  'count_events': 1},
 {'day': datetime.datetime(2019, 4, 3, 19, 31, 46, 606217),
  'level': '5',
  'count_events': 1},
 {'day': datetime.datetime(2019, 4, 4, 19, 31, 46, 606217),
  'level': '5',
  'count_events': 1}]

team_dict['Team2']
[ {'day': datetime.datetime(2019, 3, 29, 19, 31, 46, 606217),
  'level': '4',
  'count_events': 11},
 {'day': datetime.datetime(2019, 3, 30, 19, 31, 46, 606217),
  'level': '4',
  'count_events': 11},
 {'day': datetime.datetime(2019, 3, 31, 19, 31, 46, 606217),
  'level': '4',
  'count_events': 11},
 {'day': datetime.datetime(2019, 4, 1, 19, 31, 46, 606217),
  'level': '4',
  'count_events': 11},
 {'day': datetime.datetime(2019, 4, 2, 19, 31, 46, 606217),
  'level': '4',
  'count_events': 11},
 {'day': datetime.datetime(2019, 4, 3, 19, 31, 46, 606217),
  'level': '4',
  'count_events': 11},
 {'day': datetime.datetime(2019, 4, 4, 19, 31, 46, 606217),
  'level': '4',
  'count_events': 10}]

隐藏x轴(日期)上的标签,并使y轴成为整数而不是浮点

ax = plt.axes()
ax.plot(np.random.rand(50))

ax.yaxis.set_major_locator(plt.NullLocator())
ax.xaxis.set_major_formatter(plt.NullFormatter())
这里是我的测试代码(如果上面的链接对您没有帮助):
代码(Jupyter笔记本)

输出:

用法:
axarr[i,j].yaxis.set\u major\u定位器(plt.MaxNLocator(integer=True))
plt.子批(nrows,ncol,sharex=True,sharey=True)
如上所述

要定义y轴上的范围,请使用:

axarr[i,j].set_ylim([0,max(your_y_axis_data_set)]) # change your_y_axis_data_set

您也可以传递差异,计算刻度差异(刻度偏差)

似乎已解决我的X轴,但我的Y轴不变。试图使它们成为整数,axy.yaxis.set_major_locator(MaxNLocator(integer=True))对meDid不起作用。请查看上面的两个链接。是的,但我不知道是否遗漏了什么。axy.yaxis.set_major_locator(plt.MaxNLocator(integer=True))和axy.yaxis.set_major_locator(MaxNLocator(integer=True))在使Y轴数字仅为整数方面对我没有任何帮助,我得到了相同的结果。我似乎无法在这两个链接中找到我没有列出的内容的帮助。更妙的是,我不明白为什么我列出的东西适用于我的1x1和3x1,但不适用于我的3x3,我想我弄错了。我不是想隐藏Y,我是想强制它是整数而不是floatsRect,我希望Y是范围,但作为Int,而不是Float。
axarr[i,j].set_ylim([0,max(your_y_axis_data_set)]) # change your_y_axis_data_set