我该如何为每个条形图绘制均值虚线并更改python的轴比例

时间:2019-08-21 15:01:21

标签: python mean

我有一个条形图,但是有两个问题。首先,在y轴上,我有3500,3000之类的值,...如何更改y轴的值,例如$ 3.5 \ times 10 ^ {3} $,$ 3 \ times 10 ^ {3} $ ,..显然,在此示例中,我可以更改比例,但想法是更通用,更快。

第二,我该如何用虚线表示每个栏? (我没有很好地解释,我的想法是用每个小节的平均值画一条曲线)

 import matplotlib
 import matplotlib.pyplot as plt
 import numpy as np

 men_means = [2000, 3400, 3000, 3005, 2700]
 women_means = [2500, 3200, 3004, 2000, 2005]

 x = np.arange(len(labels))  # the label locations
 width = 0.35  # the width of the bars

 fig, ax = plt.subplots()
 rects1 = ax.bar(x - width/2, men_means, width, label='Men')
 rects2 = ax.bar(x + width/2, women_means, width, label='Women')

Bar Plot

3 个答案:

答案 0 :(得分:0)

您可以尝试:

plt.axvline(mean, color="red")

用于在x轴上绘制一条线(函数名称中的v表示垂直),其中平均值是您的平均值! 或者

plt.axhline(mean, color="red")

用于在y轴上画一条线(功能名称中的h表示水平)。

Here,您可以找到axvline()函数的所有可能选项。

要更改比例,可以尝试:

ax.set_yscale('log')  

Here,您可以找到支持的所有比例类型,例如线性比例,对数比例,对称对数比例,对数比例和一些示例。

答案 1 :(得分:0)

您可以通过更改比例尺获得所需的轴:

ax.set_yscale('log')

答案 2 :(得分:0)

对于虚线,将其添加到您的代码中:

ax.axhline(np.mean(men_means), linestyle='--', label='Men mean', color='blue')
ax.axhline(np.mean(women_means), linestyle='--', label='Women mean', color='orange')
ax.legend()

(我随意选择了标签/颜色)

对于您的y轴,如果您想使用科学计数法,可以尝试以下操作:

ax.ticklabel_format(axis='y', style='sci', scilimits=(0,0))