如何在所有条形图子图上显示x轴标签?

时间:2018-08-22 15:41:43

标签: python matplotlib

问题:

我正在尝试在条形图子图中显示所有标签。我已经尝试过answeranswer中的所有操作,但是没有运气。

数据:

data = StringIO("""

Index-- --Rk    Passing-Player  Passing-Cmp Passing-Att Passing-Pct Passing-Yds Passing-Y/A Passing-AY/A    Passing-TD  Passing-Int Passing-Rate
0   0   1   Patrick Mahomes 364 573 63.5    4653    8.1 8.2 36  15  147.2
1   1   2   Davis Webb  22  41  53.7    300 7.3 8.3 2   0   131.2
2   2   3   Nic Shimonek    1   2   50.0    18  9.0 9.0 0   0   125.6
3   3   4   Jakeem Grant    1   1   100.0   72  72.0    92.0    1   0   1034.8
4   4   5   Jonathan Giles  1   1   100.0   3   3.0 3.0 0   0   125.2
5   5   6   Ian Sadler  0   1   0.0 0   0.0 0.0 0   0   0.0

""")

df = pd.read_table(data, delim_whitespace=True)

dfs = [df] * 9

绘图代码:

fig, axs = plt.subplots(3,3, figsize=(10,10), sharey=True, sharex=False)
for ax,df in zip(axs.ravel(), dfs):
    ax.bar(df['Passing-Player'], df['Passing-Yds'])
    for tick in ax.get_xticklabels():
        tick.set_visible(True)

fig.autofmt_xdate(rotation=90)
fig.tight_layout(pad=2.0, w_pad=2.0, h_pad=10.0)
fig.savefig("tester.png")

结果:

enter image description here

如何显示所有x轴标签,因为在我的真实数据中,每个情节的玩家名称都不相同。

1 个答案:

答案 0 :(得分:4)

由于您不使用日期,因此需要删除fig.autofmt_xdate(rotation=90),并使用ax.set_xticklabels(labels_go_here, rotation=90)

自行设置刻度标签
fig, axs = plt.subplots(3,3, figsize=(10,10), sharey=True, sharex=False)
for ax, df in zip(axs.ravel(), dfs):
    ax.bar(df['Passing-Player'], df['Passing-Yds'])
    ax.set_xticklabels(df['Passing-Player'], rotation=90)

fig.tight_layout(pad=2.0, w_pad=2.0, h_pad=10.0)

plt.show()

enter image description here