使用日志条形图python更改Y轴刻度

时间:2020-04-26 23:58:26

标签: python matplotlib

我有一个按比例缩放的条形图,试图将y刻度从10 ^ 1、10 ^ 2等更改为整数。我尝试过手动设置刻度值,并尝试从数据中设置值,也将格式设置为标量。在我正在查看的所有问题中,我注意到的一件事是,我的图形构造不包含subplot

def confirmed_cases():
    x = df['Date']
    y = df['Confirmed']
    plt.figure(figsize=(20, 10))
    plt.bar(x, y)
    plt.yscale('log')
#     plt.yticks([0, 100000, 250000, 500000, 750000, 1000000, 1250000])
#     plt.get_yaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
    plt.title('US Corona Cases By Date')
    plt.xlabel('Date')
    plt.ylabel('Confirmed Cases')
    plt.xticks(rotation=90)

enter image description here

1 个答案:

答案 0 :(得分:2)

有几个问题:

  • 格式化程序需要放在yaxis的{​​{1}}处。使用ax获取当前的plt.gca()。请注意,没有函数ax
  • 标量格式器开始对大数使用指数表示法。为避免这种情况,plt.get_yaxis()确保仅针对set_powerlimits((m,n))10**m范围之外的值显示幂。
  • 在对数刻度中,主刻度线用于整数10**n的值10**n。其他滴答声或次要滴答声,位于2到9的k的位置n上。如果只有几个主要滴答声可见,则次要滴答声也会得到一个滴答声标签。要同时删除次要刻度线和它们的可选标签,可以使用k*10**n
  • 避免在对数刻度轴上使用零刻度。 Log(0)为负无穷大。
NullFormatter

resulting plot