python - 如何在matplotlib中设置刻度之间的固定间距

标签 python python-2.7 pandas matplotlib

我正在准备延迟百分位结果图表。这是我的 pd.DataFrame 看起来像:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
result = pd.DataFrame(np.random.randint(133000, size=(5,3)), columns=list('ABC'), index=[99.0, 99.9, 99.99, 99.999, 99.9999])

我正在使用这个函数(注释行是我已经尝试实现目标的不同 pyplot 方法):

def plot_latency_time_bar(result):

    ind = np.arange(4)
    means = []
    stds = []

    for index, row in result.iterrows():
        means.append(np.mean([row[0]//1000, row[1]//1000, row[2]//1000]))
        stds.append(np .std([row[0]//1000, row[1]//1000, row[2]//1000]))

    plt.bar(result.index.values, means, 0.2, yerr=stds, align='center')


    plt.xlabel('Percentile')
    plt.ylabel('Latency')
    plt.xticks(result.index.values)
#     plt.xticks(ind, ('99.0', '99.9', '99.99', '99.999', '99.99999'))
#     plt.autoscale(enable=False, axis='x', tight=False)
#     plt.axis('auto')
#     plt.margins(0.8, 0)
#     plt.semilogx(basex=5)
    plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)


    fig = plt.gcf()
    fig.set_size_inches(15.5, 10.5)

And here is the figure:

正如您所看到的,99.0 以上的所有百分位数的条形图都重叠并且完全不可读。我想在刻度之间设置一些固定的间距,以便在所有刻度之间具有相同的间距。

最佳答案

由于您使用的是 pandas,因此您可以在该库中完成所有这些操作:

means = df.mean(axis=1)/1000
stds = df.std(axis=1)/1000
means.plot.bar(yerr=stds, fc='b')

# Make some room for the x-axis tick labels
plt.subplots_adjust(bottom=0.2)
plt.show()

enter image description here

关于python - 如何在matplotlib中设置刻度之间的固定间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49556911/

相关文章:

python - 比较来自两个 pandas 数据框的值,与顺序无关

python - 每行用随机值替换 NaN

python - 巢模拟器 : python says “no module named nest”

python - 根据另一列的掩码修改 Pandas 数据框列的符号?

python - 如何连接/加入这三个数据框

python - 如何使用 pandas apply 代替列表循环?

python - 将从 url 获取的二进制数据保存到 Django FileField 中

python - 将 PCL 链接到 Cython C++ 模块

python - 从父类(super class)的父类(super class)调用方法

python - 如何在模块中以文本方式查找导入的名称