我有以下excel(xlsx)文件,其中包含以下信息:
files val_1 val_2 val_3 val_4
1 file_1 545.0 475.20822 116 43.0
2 file_2 179.0 19.791214 17 39.0
3 file_3 600.0 450.54407 302 92.0
4 file_4 1936.0 397.71826 182 271.0
我想解析这个文件,然后例如按列" val_1"绘制一个箱线图 然后将boxplot保存到同一个excel文件中,但是例如工作表:第2页
有没有办法在没有matplotlib的情况下使用pandas?或者matplotlib是强制性的吗?
答案 0 :(得分:2)
我认为最好的办法是使用像XlsxWriter 这样的东西。 MatPlotLib将图表保存为图像文件,XlsxWriter将图表保存为excel文件中的功能图表
答案 1 :(得分:-1)
谢谢我现在有一个解决方案,它是openpyxl + pandas + matplotlib的混合
workbook = load_workbook(excel_file,read_only=False)
worksheet = workbook['Sheet2'] # make sure this sheet exist e.g. create it before
df = pd.read_excel(excel_file, "Sheet1") #sheet 1 contains the data see above
# combine these different collections into a list
data_to_plot = [df._series['val_1']]
# Create a figure instance
fig = plt.figure(1, figsize=(8, 8))
# Create an axes instance
ax = fig.add_subplot(111)
# Create the boxplot
bp = ax.boxplot(data_to_plot)
for flier in bp['fliers']:
flier.set(marker='o', color='#e7298a', alpha=0.5)
# Save the figure
fig.savefig('val_1.png', bbox_inches='tight')
# load the created boxplot image and insert in sheet2
img = openpyxl.drawing.image.Image('val_1.png')
worksheet.add_image(img,'D3')
workbook.save(excel_file)
我尝试将x标签添加为对角线的最后一件事如下所示: https://matplotlib.org/examples/pylab_examples/boxplot_demo2.html
我之前添加了这些行:bp = ax.boxplot(data_to_plot)
xtickNames = plt.setp(ax, xticklabels="Label_1")
plt.setp(xtickNames, rotation=45, fontsize=10)
但有了这个,我只看到一个角色" L"在x轴上不是" Label_1"
而不是这两行,我尝试了这一行:
ax.set_xticklabels( ['Label_1'], rotation=45 )
但它现在也不起作用我看到对角线' 1' ???