1

我有一个带有两张表的 excel(下面的屏幕截图)文件,并尝试使用 for in 循环绘制每张表中的数据。我已经使用下面的代码成功地从这两张表中创建了两个图。

在此处输入图像描述

问题是我还想自动将绘图保存到不同的 png 文件中,其中每个 png 文件名与 excel 中的工作表名称完全相同。我得到的 png 文件名是“83”和“95”,而不是“E1”或“E4”。截图如下。 在此处输入图像描述'

在 savefig 之前还有两个 for in 循环用于注释。这两个循环变量是否需要更改?

先感谢您

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'], well['mdpl pt'], marker='o', 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)
4

1 回答 1

1

我在您的代码之后尝试了一个片段,它对我来说效果很好,它创建了 2 个带有名称的图像E3E4 因为我的工作表名称是 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"""
于 2020-09-10T11:30:30.427 回答