-1

我正在使用 seaborn 绘制图表,代码为:

fig, ax = plt.subplots(figsize=(20, 10))
ax2 = ax.twinx()

sns.barplot(x="dt_mvtc", y="qtde_t0",
         data=df_grafico_merge.query('t0_def_qtt==1'),color='blue',ax=ax)

sns.lineplot(x="dt_mvtc",y='qtde_t12', hue='t12_def_qtt', style='t12_def_qtt',
         data=df_grafico_merge.query('t0_def_qtt==1'),markers= True, color='orange', ax=ax2)

plt.xlabel("Data")
plt.ylabel("Quantidade")
plt.title('Qtde de registros por data e t0=1')
plt.xticks(rotation=90)

for axis in [ax.yaxis]:
    formatter = ScalarFormatter()
    formatter.set_scientific(True)
    axis.set_major_formatter(formatter)

plt.show()

输出是:

输出

为什么x轴是这样的?既然我x=dt_mvtc在两者中都使用,为什么它们会混合?只是为了比较,当我评论 lineax2 = ax.twinx()时,轴输出正确(即日期旋转 90 并且可读),所以我的问题是使用twinx(),但我没有错在哪里。有什么帮助吗?

4

1 回答 1

1

plt.xticks仅使用调用的最后一个子图轴。要获得旋转的 xticks,请添加:

for ax_ in fig.axes:
    plt.sca(ax_)
    plt.xticks(rotation=90)
    
于 2021-10-21T20:28:24.463 回答