【发布时间】:2018-09-08 11:04:14
【问题描述】:
我正在准备延迟百分位结果图表。这是我的 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)
如您所见,所有高于 99.0 的百分位数条都重叠并且完全不可读。我想在刻度之间设置一些固定空间,以使它们之间有相同的空间。
【问题讨论】:
-
欢迎来到 StackOverlfow!请尽量将您的问题简化为一个可验证的最小示例,请参阅:stackoverflow.com/help/mcve。简而言之,您应该有一个仅包含您的问题的示例,并且该示例可以独立运行(例如不依赖您的数据)。
-
尝试将 x 轴标签用作字符串而不是数字。
标签: python python-2.7 pandas matplotlib