无法隐藏子图轴标签或在matplotlib中设置MaxNLocator
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法隐藏子图轴标签或在matplotlib中设置MaxNLocator相关的知识,希望对你有一定的参考价值。
我目前正在尝试在matplotlib中创建一个X by 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笔记本)
import matplotlib.pyplot as plt
import numpy as np
nrows = 3
ncols = 4
f, axarr = plt.subplots(nrows, ncols,sharex=True, sharey=True)
for i in range(nrows):
for j in range(ncols):
axarr[i,j].plot(np.random.rand(50))
#axarr[i,j].axis('off')
axarr[i,j].yaxis.set_major_locator(plt.MaxNLocator(integer=True))
axarr[i,j].xaxis.set_major_formatter(plt.NullFormatter())
f.suptitle("This is the title for whole figure", fontsize=16)
使用:如上所述axarr[i,j].yaxis.set_major_locator(plt.MaxNLocator(integer=True))
和plt.subplots(nrows, ncols,sharex=True, sharey=True)
。
要在y轴上定义范围,请使用:
axarr[i,j].set_ylim([0,max(your_y_axis_data_set)]) # change your_y_axis_data_set
您也可以传递差值,计算差价差异(勾选偏差)
以上是关于无法隐藏子图轴标签或在matplotlib中设置MaxNLocator的主要内容,如果未能解决你的问题,请参考以下文章