我有一个条形图,但是有两个问题。首先,在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')
答案 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))