熊猫图未显示y轴刻度

时间:2020-10-08 09:55:33

标签: python pandas matplotlib plot yaxis

我正在尝试通过读取如下excel文件来使用熊猫绘制性能统计信息。我有许多可以正常工作的数据集图,但是即使我尝试了多种方法,也无法绘制y点。我怀疑问题出在实际值上。所有列的值都低于10000,而异常的最后一列的值则高于70000(注意:此值为预期结果)。我注意到的另一件事是,如果不使用plt.yscale('symlog',base=10),它会绘制y轴刻度值,但是我真的想对y-ticks使用symlog选项

import pandas as pd
import numpy as np
# import matplotlib
# import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
import seaborn
seaborn.set()

import numpy as np
#color = ['blue', 'green', '#bc15b0', 'indigo']
colors = ['tab:blue', 'tab:green', 'tab:orange', 'tab:red','tab:olive']
linestyle = ["-s", "-x", "-+", "o-"]
plot_lines = ["A", "B", "C", "D"]
SIZE=[256,128,64,32,16,8,4]
plot_title=['1GB','512MB ','256MB','128MB','64MB', '32MB','16MB','8MB', '4MB']
file_locn = ''r'C:\Users\me\Desktop\stat.xlsx'''
df1 = pd.read_excel(file_locn, sheet_name='LC-DS1', header=[0, 1])

df_1024 = df1.xs(1024, axis=1, level=0)
df_512 = df1.xs(512, axis=1, level=0)
df_256 = df1.xs(256, axis=1, level=0)
df_128 = df1.xs(128, axis=1, level=0)
df_64 = df1.xs(64, axis=1, level=0)
df_32 = df1.xs(32, axis=1, level=0)
df_16 = df1.xs(16, axis=1, level=0)
df_8 = df1.xs(8, axis=1, level=0)
df_4 = df1.xs(4, axis=1, level=0)
nrow=3
ncol=3
# make a list of all dataframes
df_list = [df_1024, df_512, df_256, df_128, df_64,df_32, df_16, df_8, df_4]

fig, axes = plt.subplots(nrow, ncol, sharex=True, sharey=True)
# plot counter
count = 0
for c in range(ncol):
    df_list[count].set_axis(SIZE)
    count += 1

plt.xscale('symlog',base=2)
plt.yscale('symlog',base=10)
count=0
axes[0,0].set_ylabel('Access count ')
axes[1,0].set_ylabel('Access count ')
axes[2,0].set_ylabel('Access count ')
axes[2,0].set_xlabel('Size in MB')
axes[2,1].set_xlabel('Size in MB')
axes[2,2].set_xlabel('Size in MB')

major_ticks = np.arange(0, 90000, 15000)
minor_ticks = np.arange(0, 10001, 1000)

axes[0,0].set_yticks(major_ticks)
axes[1,0].set_yticks(major_ticks)
axes[2,0].set_yticks(major_ticks)
axes[0,0].set_yticks(minor_ticks, minor=True)
axes[1,0].set_yticks(minor_ticks, minor=True)
axes[2,0].set_yticks(minor_ticks, minor=True)

for r in range(nrow):
    for c in range(ncol):
        df_list[count].set_index('SIZE').plot(style=linestyle,ax=axes[r,c], legend=False)
        axes[r,c].set_title(plot_title[count])
        axes[r,c].set_xlim(3.7,280)
        count+=1
lines, labels = fig.axes[-1].get_legend_handles_labels()

fig.legend(lines, labels, loc='upper center',ncol=4)
plt.show()

enter image description here

enter image description here

0 个答案:

没有答案