【发布时间】:2020-12-16 20:00:43
【问题描述】:
我对 python 还很陌生,首先是这个问题。我的数据以三个数组(x、y 和 z)的形式存储在 excel 工作表中的不同数量的工作表中,这样 excel 文件的每个工作表中的数据构成一个子图,并且应该像 所示那样完全绘制子图。
在这种情况下,有三张纸。
使用pd.read_excel 以字典形式加载的 Excel 电子表格包含每个工作表作为带有子图数据的键。由于工作表的数量不同,我希望循环绘制所有工作表,以便循环读取字典中的每个数据帧并创建一个复合图形,其中包含代表每个工作表的所有子图,最好是在一个共同的 x 轴上.
我尝试了以下代码,但它创建了单独保存的单独图,需要我使用光栅图形编辑器软件手动将它们编译在一起。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
loc = r'E:\Python\data.xlsx'
load = pd.read_excel(loc,sheet_name = None, header=None)
nar=list(load.keys())
nplots = len(nar)
fig, axs = plt.subplots(nrows=nplots, ncols=1, sharex=True)
for k in load:
dem=load[k]
x=np.array(dem[0])
y=np.array(dem[1])
z=np.array(dem[2])
# creating different limits for contour lines
lmin=dem[2].min()
lmax=dem[2].max()
progn=(lmax-lmin)/10
progn2=(lmax-lmin)/20
progn0=(lmax-lmin)/5
limit=np.arange(lmin,lmax,progn)
limit0=np.arange(lmin,lmax,progn0)
limit2=np.arange(lmin,lmax,progn2)
fig, ax = plt.subplots(figsize=(12,4))
#cline,mcline are contour lines and con is contour fill
cline=ax.tricontour(x,y,z,limit0, color='k')
mcline=ax.tricontour(x,y,z,limit)
con=ax.tricontourf(x, y, z, limit2, cmap='rainbow')
plt.colorbar(con, shrink=.5)
ax.set_aspect('equal')
plt.savefig(str(k)+'.png', dpi=300)
plt.show()
我想请一位专家帮助我实现所需的循环技术。提前致谢。
【问题讨论】:
标签: python for-loop matplotlib subplot