问题描述
我有一个包含两张纸的excel(下图为屏幕快照)文件,并尝试使用for in loop绘制每张纸的数据。我已经使用下面的代码成功地从这两张纸上创建了两个图。
问题是我还想将图自动保存到不同的png文件中,其中每个png文件名与excel中的图纸名称完全相同。我得到的png文件名是“ 83”和“ 95”,而不是“ E1”或“ E4”。屏幕截图如下。 '
在savefig之前,还有两个for循环用于批注。这两个循环变量是否需要更改?
先谢谢您
import pandas as pd
import matplotlib.pyplot as plt
path ='F:\Backup\JN\TOR\TOR HLS.xlsx'
data= pd.ExcelFile(path)
sheets = data.sheet_names
for i in sheets:
well=pd.read_excel(data,sheet_name=i)
plt.plot(well['T'],well['mdpl pt'],marker='o',color='blue')
plt.plot(well['P'],color='red')
for i,txt in enumerate(well['csg']):
plt.annotate(txt,((well['x csg']+5)[i],well['mdpl csg'][i]))
for i,txt in enumerate(well['liner']):
plt.annotate(txt,((well['x liner']+5)[i],well['mdpl liner'][i]))
plt.savefig(str(i),dpi=300,transparent='True')
plt.close(i)
解决方法
我在您的代码之后尝试了一个代码段,它对我来说效果很好,并且它创建了两个图像,名称分别为E3
和E4
,因为我的工作表名称分别为E3和E4。我还附加了我的excel数据作为输出。请检查一下
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
path ='HLS.xlsx'
data= pd.ExcelFile(path)
sheets = data.sheet_names
print(sheets)
#['E3','E4']
for i in sheets:
well=pd.read_excel(data,sheet_name=i)
print(well)
plt.plot(well['A'],well['B'],color='blue')
plt.savefig(i)
plt.close(i)
#well
#E3 first #E4 second
""" A B
0 1 6
1 2 5
2 3 4
3 4 3
4 5 2
5 6 1
A B
0 6 1
1 5 2
2 4 3
3 3 4
4 2 5
5 1 6"""